我有一个交叉表查询,它查询一堆位置并获取他们的测量读数。我转向测量读数,所以我得到一个表,其中包含每行上的位置/日期组合的所有测量值。这适用于获取所有数据。它也适用于每个字段过滤一个值。即WHERE LocationID = ? AND MeasureID = ?
但我真正需要的是WHERE LocationID IN (?) AND MeasureID IN (?)
之类的东西在哪里?是一个数组(或任何工作完成。这可能吗?
在我的表单上,我正在使用DAO.QueryDef对象来构建我的记录集。如果可能的话,我想避免在VBA中构建整个查询字符串,主要是因为这个特定的查询很长,而且我宁愿它生活在一个视图而不是代码模块中。话虽如此,我可以在VBA中构建它,但它不是理想的解决方案。
答案 0 :(得分:1)
您可以随时使用替换。
sSQL = "SELECT lots of sql WHERE LocationID IN (qqlocidqq)"
sSQLWithLoc = Replace (sSQL, "qqlocidqq", "1,2,3,4")
Dim qdf As QueryDef
'A query that exists
Set qdf= CurrentDB.QueryDefs("MyJunkQuery")
'Permanently change the sql of that query
qdf.SQL = sSQLWithLoc
进一步研究一下,它可能适合你使用Instr,如下:
SELECT Table1.LocationID
FROM Table1
WHERE InStr([@List],[LocationID])>0
如此测试:
PARAMETERS Number_List Text(50);
TRANSFORM Count(Table1.AKey) AS CountOfAKey
SELECT Table1.AText
FROM Table1
WHERE InStr([Number_List],[ANumber])>0
GROUP BY Table1.AText
PIVOT Table1.ANumber;
Table1由字段AKey,AText和ANumber组成。 Number_List是由参数提供的逗号分隔的数字列表。 Instr在提供的参数中检查Table1中是否存在ANumber。
重叠1,2,12存在问题,但创意使用逗号可能适合:
WHERE InStr("," & [Number_List] & "," , "," & [ANumber] & ",")>0
当然分隔符不必是逗号,|通常很有用。