根据下拉选择自动更新表单中显示的查询
Posted
技术标签:
【中文标题】根据下拉选择自动更新表单中显示的查询【英文标题】:Automatic updating of query shown in a form based on dropdown selection 【发布时间】:2015-06-17 12:28:36 【问题描述】:我认为这将是有史以来最容易解决的问题,但在花了一个上午寻找答案后,我仍然无法解决问题。
我有一个列表框,在链接到查询的用户表单上显示某些国家/地区的数据。我想允许我的用户根据下拉列表中的选择来归档该列表。
这是列表框行源中的SQL:
SELECT tblFUNDS.MorningsStar_Fund_Name, tblFUNDS.ISIN, tblFUNDS.RDR, tblISIN_Country_Table.Country
FROM tblFUNDS INNER JOIN tblISIN_Country_Table ON tblFUNDS.ISIN = tblISIN_Country_Table.ISIN
GROUP BY tblFUNDS.MorningsStar_Fund_Name, tblFUNDS.ISIN, tblFUNDS.RDR, tblISIN_Country_Table.Country, tblFUNDS.Fund_Selection
HAVING (((tblISIN_Country_Table.Country)=[Forms]![frmMain]![ddnCountry]) AND ((tblFUNDS.Fund_Selection)=0));
列表框和下拉列表中的值均正确显示。 但是,我无法获得下拉选择来过滤列表。
到目前为止,我已尝试将以下参考及其各种版本插入到列表框链接到行源中的查询中:
[Forms]![frmMain]![ddnCountry]
我还在下拉列表中为On Change
事件插入了以下代码:
Private Sub ddnCountry_Change()
cmbFIlterSelection.Requery
End Sub
On Change
事件正确触发,因为当我设置断点时,它会在一行代码上停止,但它似乎什么也没做。
我做错了什么?
【问题讨论】:
你说"I also inserted the following code"
,但后面没有代码。
很抱歉。我的错。更新帖子。
您能否也发布用于您的ListBox
的查询的SQL?
以上更新。感谢您抽出宝贵时间查看此内容!
您应该使用WHERE
-clause 而不是HAVING
-Clause,因为您没有在条件中使用任何聚合函数。
【参考方案1】:
好的。经过数小时寻找答案,现在甚至在这里发帖,我发现了问题:
需要修改 SQL 查询以包含以下 .Text
现在是这样的:
[Forms]![frmMain]![ddnCountry].[Text]
【讨论】:
那是有道理的。这意味着您也可以将您的事件也放入AfterUpdate
,并且它应该在没有.Text
的情况下工作,您实际上只需要在值没有机会更新时使用.Text
。跨度>
@Newd 我刚刚尝试过...AfterUpdate
事件工作正常,我将来使用它很有意义,但我仍然必须输入.Text
才能让它工作正确。
你必须在AfterUpdate
中使用.Text
?
是的。否则失败。事实上,我仍在研究这个特定问题,但它不再是我在这里描述的问题。我希望列表框在用户开始使用下拉列表过滤它之前显示所有可能的记录......我有一种感觉我将重新审视这个确切的问题。以上是关于根据下拉选择自动更新表单中显示的查询的主要内容,如果未能解决你的问题,请参考以下文章