我被分配了在MS Access 2007中设计临时客户跟踪系统的任务(sheeeesh!)。表和关系都已成功设置。但是我在尝试为一个表设计数据输入表时遇到了一个小问题......首先是一些解释。
屏幕包含3个下拉框(除了其他字段)。
第一次下拉
第一个下拉列表(cboMarket)代表市场,让用户可以选择2个选项:
由于第一个下拉列表只包含2个项目,所以我不打算为它制作一个表格。我将它们添加为预定义的列表项。
第二次下拉
一旦用户在此选择中进行选择,第二个下拉列表(cboLeadCategory)将加载一个Lead类别列表,即Fairs&展览,代理商,新闻广告,在线广告等。两个市场使用不同的潜在客户类别。因此,此框取决于第一个。
第二个组合名为 Lead_Cateogries 的绑定表的结构为:
ID Autonumber
Lead_Type TEXT <- actually a list that takes up Domestic or International
Lead_Category_Name TEXT
第3次下拉
根据第二个类别中的类别选择,第三个(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;
第二个组合的AfterUpdate事件是:
Private Sub cboLeadCategory_AfterUpdate()
Me![cboLeadSource].Requery
End Sub
第3个组合的行来源包含:
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会毫不费力地加载相应的类别。
但是当我从中选择一个特定的类别时,而不是第三个组合加载主要来源名称,会显示一个模态对话框,要求我输入参数。
alt text http://img163.imageshack.us/img163/184/enterparamprompt.png
当我在此提示中输入任何内容(有效或无效的数据)时,我会收到另一个提示:
alt text http://img52.imageshack.us/img52/8065/enterparamprompt2.png
为什么会这样?为什么第3个框不能根据需要加载源名称。请问任何人可以解释一下我出错的地方吗?
谢谢, 米^ E
=============================================== ====
更新
我在第3个组合的查询中发现了一个小故障。它与第二个组合的值不匹配。我修复了它,现在查询位于:
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提示是GONE!然而,第三组合仍然固执地拒绝加载任何值。有什么想法吗?
答案 0 :(得分:0)
没关系。找到了解决方案。第二个组合的 BoundColumn 属性未设置为正确的列。因此,其中的选择值不正确,并且第3个组合无法正确引用链接表(使用正确的索引)。
完成工作:)
感谢所有可能抽出时间审查问题的人。