vba - 查询不隔离记录
问题描述
我有一个运行两个不同查询的表单。结果包括在运行第二个查询时无法隔离(向下钻取)第一个查询的记录的记录。
我尝试设置几个不同的查询以隔离记录,包括尝试组合查询以希望消除对已过滤掉的记录的召回。
Private Sub cmdSearchMaterial_Click()
Dim task2 As String
task2 = "select * from TblPurchases order by [Material] "
Me.Filter = "[Material]= '" & Me.CboMaterial & "'"
Me.TxtTotal = Format(DCount("Material", "QueryMaterials"), "0")
Me.RecordSource = ("QueryMaterials")
End Sub
'Second query
Private Sub CmdSearchVendors_Click()
Dim task As String
task = "select * from TblPurchases order by [vendors] "
Me.Filter = "[Vendor]= '" & Me.cbovendors & "'"
Me.TxtTotal = Format(DCount("vendor", "Purchases Query"), "0")
Me.RecordSource = ("Purchases Query")
End Sub
我期望的结果是,例如,我寻找一种材料“水泥”,我得到了三四个水泥供应商的几条记录。我为一个特定的供应商运行第二个查询,但我得到了该供应商的所有交易,而不仅仅是该供应商的“水泥”交易。例如,我期待的是,如果我选择一个供应商说(“CitiHardware”),我会看到“CitiHardware”中的所有项目,好的。现在我选择一个我想从“CitiHardware”中分离出来的材料说(“工具”) “。我得到的是我购买的所有供应商,包括 CitiHardware 的“工具”。如果我再次过滤“CitiHardware”,我会得到所有购买。来自 CitiHardware 的“工具”与其他记录并不隔离。
解决方案
您的代码中有一些错误。首先,您只是过滤表单而不是实际查询。过滤表单后,您再次将记录源设置为查询本身(没有过滤器)。
有几种方法可以实现你想要的,这取决于你的场景。例如,您可以根据您的组合框选择在每次新建时创建记录源。
...
Me.RecordSource = task & " WHERE " & Me.Filter
End Sub
或者您从查询中更改 sql:
Dim qdef as QueryDef
Set qdef = CurrentDb.QueryDefs("YourQueryName")
qdef.SQL = "SELECT * FROM TblPurchases WHERE Material = 'MaterialString'"
Me.Recordsource = "YourQueryName"
推荐阅读
- github - 怎么可能有一个带有克隆器而没有访问者的存储库?
- vba - 使用数组计算文本中的单词和短语匹配
- python - 我明白了,但铁标签不会更新
- node.js - 如何将亚马逊 s3 api 集成到我的网站中
- c++ - 使用“--enable-vtable-verify”构建 Devtoolset 7 gcc
- javascript - 拼接和打字稿
- html - 如何一个接一个地放置一个div?
- sorting - 在 Power BI 中重新排序 x 轴值 - “排序依据”不起作用
- django-rest-framework - 如何在 Django REST Framework 中处理嵌套对象
- sas - 在 SAS 中创建等于变量值的新行