我有一个运行两个不同查询的表单。结果包括记录,这些记录在运行第二个查询时无法隔离(向下钻取)第一个查询的记录。
我尝试设置几个不同的查询以隔离记录,包括尝试合并查询,以期消除对已过滤掉的记录的撤回。
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
我期望的结果是,例如,我寻找一种材料“水泥”,我与3或4个水泥供应商取得了几条记录。我针对一个特定的供应商运行第二个查询,但是我得到了该供应商的所有交易,而不仅仅是该供应商的“水泥”交易。我期望例如,如果我选择供应商的say(“ CitiHardware”),我会看到“ CitiHardware”中的所有项目,好的。 现在,我选择一个要从“ CitiHardware”中分离出来的材料(“工具”)。我得到的就是我从包括CitiHardware在内购买了“工具”的所有供应商。如果我再次过滤“ CitiHardware”,我将获得所有购买的商品。CitiHardware的“ Tools”不会与其他记录分离。
答案 0 :(得分:0)
您的代码中有一些错误。首先,您只过滤表单而不是实际查询。过滤表单后,将记录源再次设置为查询本身(不使用过滤器)。
有几种方法可以实现您想要的,这取决于您的方案。例如,您可以根据您的组合框选择每次创建记录源。
...
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"