我被分配了在 MS Access 2007 中设计一个临时客户跟踪系统的任务(嘘!)。表和关系都已成功设置。但是我在尝试为一个表设计数据输入表单时遇到了一个小问题……这里先解释一下。
该屏幕包含 3 个下拉框(除其他字段外)。
第一个下拉菜单
第一个下拉列表(cboMarket)表示市场允许用户在 2 个选项之间进行选择:
- 国内的
- 国际的
由于第一个下拉列表仅包含 2 个项目,我没有费心为它制作表格。我将它们添加为预定义的列表项。
第二个下拉菜单
一旦用户在此选项中进行选择,第二个下拉列表(cboLeadCategory)会加载潜在客户类别列表,即展会、代理商、新闻广告、在线广告等。两个市场使用不同的潜在客户类别集. 因此,此框取决于第一个框。
绑定表的结构,名为Lead_Cateogries的第二个组合是:
ID Autonumber
Lead_Type TEXT <- actually a list that takes up Domestic or International
Lead_Category_Name TEXT
第三个下拉菜单
根据第二个类别的选择,第三个(cboLeadSource)应该显示一组预定义的属于特定类别的潜在客户来源。
表名为Lead_Sources,结构为:
ID Autonumber
Lead_Category NUMBER <- related to ID of Lead Categories table
Lead_Source TEXT
当我在第一个下拉列表中进行选择时,将调用组合的AfterUpdate事件,它指示第二个下拉列表加载内容:
Private Sub cboMarket_AfterUpdate()
Me![cboLead_Category].Requery
End Sub
第二个组合的行源包含一个查询:
SELECT Lead_Categories.ID, Lead_Categories.Lead_Category_Name
FROM Lead_Categories
WHERE Lead_Categories.Lead_Type=[cboMarket]
ORDER BY Lead_Categories.Lead_Category_Name;
第二个组合的更新后事件是:
Private Sub cboLeadCategory_AfterUpdate()
Me![cboLeadSource].Requery
End Sub
第三个组合的行源包含:
SELECT Leads_Sources.ID, Leads_Sources.Lead_Source
FROM Leads_Sources
WHERE [Lead_Sources].[Lead_Category]=[Lead_Categories].[ID]
ORDER BY Leads_Sources.Lead_Source;
问题
当我从 cboMarket 中选择市场类型时,第二个组合 cboLeadCategory 会顺利加载适当的类别。
但是当我从中选择一个特定的类别时,而不是加载潜在客户名称的第三个组合,会显示一个模式对话框,要求我输入一个参数。
替代文字 http://img163.imageshack.us/img163/184/enterparamprompt.png
当我在此提示中输入任何内容(有效或无效数据)时,我会得到另一个提示:
替代文字 http://img52.imageshack.us/img52/8065/enterparamprompt2.png
为什么会这样?为什么第三个框没有按需要加载源名称。任何人都可以阐明我哪里出错了吗?
谢谢,m^e
==================================================== =
更新
我在第三个组合的查询中发现了一个故障。它与第二个组合的值不匹配。我修复了它,现在查询位于:
SELECT Leads_Sources.ID, Leads_Sources.Lead_Source
FROM Leads_Sources
WHERE (((Leads_Sources.Lead_Category)=[cboLead_Category]))
ORDER BY Leads_Sources.Lead_Source;
那些讨厌的 Enter Param 提示已经消失了!!!但是,第三个组合仍然顽固地拒绝加载任何值。有任何想法吗?