您始终可以使用替换。
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
当然,分隔符不必是逗号,| 经常有用。