3

我正在尝试编写一些使用 SQL 从多个表中删除行的代码。

用户可以在文本框中键入类型编号,该文本框中用逗号分隔,该逗号用于 SQL DELETE 语句的 WHERE 子句中。

我已经设法将字符串拆分为一个变体数组,现在我想将它插入到我的 SQL 语句中。

如何将变量插入 SQL 语句并让它遍历数组的每个元素?

编辑:更多的挖掘让我了解了 For Each Next 语句。这可能是我正在寻找的。

4

4 回答 4

7

我建议您在 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."
于 2012-07-23T09:12:52.213 回答
0

通用方法

WHERE 
','+Array+',' like '%,'+col+',%'

它将考虑您的 Array 中可用的所有数字

于 2012-07-23T09:09:29.127 回答
0

你可以让它变得简单并精心制作一个字符串,比如

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
于 2012-07-23T09:10:00.137 回答
0

如果您想使用来自两个不同数组的数组值对两个(或多个)列运行 SQL 查询,此方法将失败。。例如

where col1=array1(i) and col2=array2(i)
于 2013-08-11T04:20:50.727 回答