【发布时间】:2013-08-11 12:38:49
【问题描述】:
我正在尝试编写一些代码,使用 SQL 从多个表中删除行。
用户可以在文本框中键入类型数字,这些数字用逗号分隔,用于 SQL DELETE 语句的 WHERE 子句。
我已经设法将字符串拆分为一个变体数组,现在我想将它插入到我的 SQL 语句中。
如何将变量插入到 SQL 语句中并让它遍历数组的每个元素?
编辑:更多的挖掘让我了解了 For Each Next 语句。这可能是我正在寻找的。p>
【问题讨论】:
我正在尝试编写一些代码,使用 SQL 从多个表中删除行。
用户可以在文本框中键入类型数字,这些数字用逗号分隔,用于 SQL DELETE 语句的 WHERE 子句。
我已经设法将字符串拆分为一个变体数组,现在我想将它插入到我的 SQL 语句中。
如何将变量插入到 SQL 语句中并让它遍历数组的每个元素?
编辑:更多的挖掘让我了解了 For Each Next 语句。这可能是我正在寻找的。p>
【问题讨论】:
我建议你在 VBA 中构建你的查询,然后你的数字列表可以是一个 IN 语句:
sSQL = "DELETE FROM table WHERE ID In (" & MyList & ")"
其中 MyList = "1,2,3,4" 或类似的。
如您所见,您不需要数组,文本框比组合框更合适。如果您希望允许您的用户通过名称进行选择,那么列表框很有用。您可以遍历列表框中的选定项目,并从 ID 构建一个字符串以在 Delete 语句中使用。 (MS Access 2007 - Cycling through values in a list box to grab id's for a SQL statement)
然后您可以针对数据库实例执行 sql。例如:
Dim db As Database
Set db = CurrentDB
db.Execute sSQL, dbFailOnError
MsgBox "You deleted " & db.RecordsAffected & " records."
【讨论】:
List = "1,2,3"; Ary = Split(List,","),但我怀疑你可以在sql语句中使用数组。
通用方法
WHERE
','+Array+',' like '%,'+col+',%'
它将考虑数组中所有可用的数字
【讨论】:
你可以把它简单化并详细说明一个字符串,比如
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)
【讨论】: