我正在尝试编写一些使用 SQL 从多个表中删除行的代码。
用户可以在文本框中键入类型编号,该文本框中用逗号分隔,该逗号用于 SQL DELETE 语句的 WHERE 子句中。
我已经设法将字符串拆分为一个变体数组,现在我想将它插入到我的 SQL 语句中。
如何将变量插入 SQL 语句并让它遍历数组的每个元素?
编辑:更多的挖掘让我了解了 For Each Next 语句。这可能是我正在寻找的。
我建议您在 VBA 中构建查询,然后您的数字列表可以是 IN 语句:
sSQL = "DELETE FROM table WHERE ID In (" & MyList & ")"
其中 MyList = "1,2,3,4" 或类似的。
如您所见,您不需要数组,文本框比组合框更合适。如果您希望允许您的用户通过名称进行选择,那么列表框很有用。您可以遍历列表框中的选定项目,并从 ID 构建一个字符串以在 Delete 语句中使用。(MS Access 2007 - 循环遍历列表框中的值以获取 SQL 语句的 ID)
然后,您可以针对数据库实例执行 sql。例如:
Dim db As Database
Set db = CurrentDB
db.Execute sSQL, dbFailOnError
MsgBox "You deleted " & db.RecordsAffected & " records."
通用方法
WHERE
','+Array+',' like '%,'+col+',%'
它将考虑您的 Array 中可用的所有数字
你可以让它变得简单并精心制作一个字符串,比如
stringBuilder sb = StringBuilder("DELETE FROM YOURTABLE WHERE ");
foreach(string st in stringArray){
sb.append("YOURFIELD='" + st + "'");
//If it is not the last element, add an "OR"
if (st != stringArray[stringArray.length -1]) sb.append(" OR ");
}
//Now, you have a string like
//DELETE FROM YOURTABLE WHERE YOURFIELD='hello' OR YOURFIELD='YES'
//... do something with the command
如果您想使用来自两个不同数组的数组值对两个(或多个)列运行 SQL 查询,此方法将失败。。例如
where col1=array1(i) and col2=array2(i)