Sql 为什么Listbox不基于多个下拉字段进行过滤

Sql 为什么Listbox不基于多个下拉字段进行过滤,sql,ms-access,vba,ms-access-2010,Sql,Ms Access,Vba,Ms Access 2010,案例: 我有一个列表框,其中有一个查询作为数据源。查询包含基于下拉字段的参数,下拉字段与列表框位于同一用户窗体上 如果在查询中仅使用单个下拉字段作为参数,则列表框将更新并显示过滤后的结果 问题: 如果我引用多个下拉字段,则查询仅根据我选择的最后一个下拉字段进行过滤。这是为什么?我如何根据所有四个下拉列表中的选定值将其更改为过滤器 SQL: SELECT tblFUNDS.MorningsStar_Fund_Name, tblFUNDS.ISIN, tblFUNDS.RDR AS [Retro F

案例: 我有一个列表框,其中有一个查询作为数据源。查询包含基于下拉字段的参数,下拉字段与列表框位于同一用户窗体上

如果在查询中仅使用单个下拉字段作为参数,则列表框将更新并显示过滤后的结果

问题: 如果我引用多个下拉字段,则查询仅根据我选择的最后一个下拉字段进行过滤。这是为什么?我如何根据所有四个下拉列表中的选定值将其更改为过滤器

SQL:

SELECT tblFUNDS.MorningsStar_Fund_Name, tblFUNDS.ISIN, tblFUNDS.RDR AS [Retro Frei], tblMorningstar_Data.[DEU Tax Transparence], tblMorningstar_Data.[Distribution Status], tblISIN_Country_Table.Country
FROM (tblFUNDS INNER JOIN tblISIN_Country_Table ON tblFUNDS.ISIN = tblISIN_Country_Table.ISIN) INNER JOIN tblMorningstar_Data ON (tblFUNDS.Fund_Selection = tblMorningstar_Data.Fund_Selection) AND (tblFUNDS.ISIN = tblMorningstar_Data.ISIN)
GROUP BY tblFUNDS.MorningsStar_Fund_Name, tblFUNDS.ISIN, tblFUNDS.RDR, tblMorningstar_Data.[DEU Tax Transparence], tblMorningstar_Data.[Distribution Status], tblISIN_Country_Table.Country, tblFUNDS.Fund_Selection
HAVING (((tblFUNDS.RDR) Like Nz([Forms]![frmMain]![ddnRDR].[Text],'*')) AND ((tblMorningstar_Data.[DEU Tax Transparence]) Like Nz([Forms]![frmMain]![ddnTax].[Text],'*')) AND ((tblMorningstar_Data.[Distribution Status]) Like Nz([Forms]![frmMain]![ddnDistribution].[Text],'*')) AND ((tblISIN_Country_Table.Country) Like Nz([Forms]![frmMain]![ddnCountry].[Text],'*')) AND ((tblFUNDS.Fund_Selection)=0));
我的查询中进行筛选的相关部分如下:

HAVING (((tblFUNDS.RDR) Like Nz([Forms]![frmMain]![ddnRDR].[Text],'*')) AND ((tblMorningstar_Data.[DEU Tax Transparence]) Like Nz([Forms]![frmMain]![ddnTax].[Text],'*')) AND ((tblMorningstar_Data.[Distribution Status]) Like Nz([Forms]![frmMain]![ddnDistribution].[Text],'*')) AND ((tblISIN_Country_Table.Country) Like Nz([Forms]![frmMain]![ddnCountry].[Text],'*')) AND ((tblFUNDS.Fund_Selection)=0));

您使用什么事件设置查询?我使用的是
AfterUpdate()
,代码只有一行:
libFilterSelection.Requery
关于
根据我选择的上一个下拉列表只查询过滤器。您是否可以测试几次,并通过更改您选择下拉选项的顺序来100%确定情况是否如此?这种特殊的症状似乎很奇怪。同样在
libFilterSelection.Requery
之前,请
Debug.Print Forms(“frmMain”).Controls(“ddnRDR”).Text
以及查询中的其他控件,以便我们可以看到值显示为什么,这也是查询将使用的。非常棒的建议!在运行查询之前,我没有想过使用调试打印。。。当我插入你建议的代码时,我收到了一条错误消息。因此,我从末尾删除了
.Text
,代码正常工作。我看到传递的值是下拉字段中的实际值,除了国家/地区。这是一个值(可能是Access的内部引用,因为它是一个联接查询)。这让我想到。。。我从所有查询参数中删除了
.Text
,除了国家一号,现在它可以工作了!在它不能正确过滤的时候。
Debug.Print
是怎么说的?您用什么事件设置查询?我使用的是
AfterUpdate()
,代码只有一行:
libFilterSelection.Requery
关于
根据我选择的上一个下拉菜单只查询过滤器。您是否可以测试几次,并通过更改您选择下拉选项的顺序来100%确定情况是否如此?这种特殊的症状似乎很奇怪。同样在
libFilterSelection.Requery
之前,请
Debug.Print Forms(“frmMain”).Controls(“ddnRDR”).Text
以及查询中的其他控件,以便我们可以看到值显示为什么,这也是查询将使用的。非常棒的建议!在运行查询之前,我没有想过使用调试打印。。。当我插入你建议的代码时,我收到了一条错误消息。因此,我从末尾删除了
.Text
,代码正常工作。我看到传递的值是下拉字段中的实际值,除了国家/地区。这是一个值(可能是Access的内部引用,因为它是一个联接查询)。这让我想到。。。我从所有查询参数中删除了
.Text
,除了国家一号,现在它可以工作了!在它不能正确过滤的时候。
Debug.Print
是怎么说的?