我需要通过ADO从Excel工作簿中查询XLS“数据库”。
我使用以下内容:
...代码
objRecordset.Open "SELECT * FROM [MY_TABLE$] WHERE Code_ID = " & the_ID & ", objConnection, adOpenStatic, adLockOptimistic, adCmdText
...代码
如果我只搜索Id(the_ID),例如1234
,它运行良好但我需要的是同时搜索各种the_ID ....
例如,ID 1234,1225,6225,5656的任何匹配都应该在查询中返回。
或多或少是Id的数组。
感谢任何帮助...
答案 0 :(得分:3)
您可以使用Join
加入ID数组,然后在sql中使用IN
,例如
Dim ids(3) As String
ids(0) = "1234"
ids(1) = "1225"
ids(2) = "6225"
Dim sql As String
sql = "SELECT * FROM [MY_TABLE$] WHERE Code_ID IN (" & Join(ids, ",") & ")"
如果您从某个范围获取ID,那么您将感兴趣this answer。
注意强>
由于您只是查询自己的电子表格,我认为安全性可能不是主要问题,但我通常建议使用参数化查询,这可能需要已知数量的ID,或者您必须生成sql苍蝇,像是:
WHERE Code_id IN (@Param1, @Param2, @Param3, @Param4)
制作这样的sql应该不会太难,然后将你的id作为参数添加到记录集中。我很久没有使用VBA了,所以我不记得添加参数的正确方法(或者甚至可能)。如果我记得我会更新答案。