我已被分配任务以设计MS Access 2007(sheeeesh!)中的临时客户跟踪系统。表格和关系都已成功设置。但是我在尝试设计一个表的数据输入表单时遇到了一个小问题......首先是一些解释。在Access 2007中的多个级联下拉框中填充数据
屏幕包含3个下拉框(除了其他字段)。
1下拉
第一个下拉(cboMarket)代表市场让用户2个选项之间进行选择:
- 国内
- 国际
由于第一个下拉列表只包含2个项目,我没有打扰为它做表格。我将它们添加为预定义的列表项。
第二个下拉
一旦用户在这一个选择,第二个下拉(cboLeadCategory)负载可达铅分类列表,即交易会&展览,代理,媒体广告,在线广告等。这两个市场使用不同的铅类别集合。因此这个盒子依赖于第一个。
结构绑定表,命名为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
当我做的第一个下拉列表中选择,组合的更新后事件被称为,指示第二下拉加载内容:
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
的行源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
这究竟是为什么?为什么不是第三个盒子根据需要加载源名称。请问任何人可以告诉我哪里出错了?
谢谢, 米^ E
==================================== ===============
UPDATE
我发现在查询的第三组合毛刺。它不是用的价值匹配起来第二个组合。我修正了它,现在查询站在:
SELECT Leads_Sources.ID, Leads_Sources.Lead_Source
FROM Leads_Sources
WHERE (((Leads_Sources.Lead_Category)=[cboLead_Category]))
ORDER BY Leads_Sources.Lead_Source;
那些讨厌的输入参数提示是GONE!但是,第三个组合仍然固执地拒绝加载任何值。有任何想法吗?
我注意到,在表结构中,您将第二个表称为Lead_Category_Name TEXT,而第三个表称为具有Lead_Category NUMBER。我不明白这些不同的领域(列)如何匹配。 – Fionnuala 2010-04-24 07:10:42
看到你自己回答了这个问题,但这是一个记录完备的问题。 +1 – 2010-04-24 08:25:07
“那些讨厌的Enter Param提示”并不是你应该抱怨的东西。如果在没有为SQL语句明确定义参数时弹出窗口,那很好 - 这表示您犯了一个错误,并且有机会让您修复它。另外,我认为隐式引用控件是不明智的,如在Leads_Sources.Lead_Category = [cboLead_Category] - 我会将其更改为Leads_Sources.Lead_Category = Forms!MyForm![cboLead_Category](其中“MyForm”是实际名称的引用组合框存在的形式)。 – 2010-04-26 22:53:48