我正在尝试在Access VBA中运行一些SQL命令,以使用从表单中的组合框获得的值更新列中的空白(null)字段。
目前我正在接收
运行时错误'3061'参数太少。预计1
但似乎形成得恰到好处。
我正在使用的代码如下。用户将作为字符串传递,例如 - “Joe Bloggs”。
Public Sub testSub(user as string)
Dim db as DAO.Database
Dim sqlstr as String
set db as CurrentDB
sqlstr = "UPDATE tTable1 SET Field1 = [" & user & "] WHERE Field1 IS NULL;"
db.Execute sqlstr
End Sub
答案 0 :(得分:3)
考虑参数查询,而不是将带引号的字符串值连接到List<String> func(List<String> old, Map<String, String> oldToNew)
{
List<String> holger = old.stream()
.map(oldToNew::get)
.filter(Objects::nonNull)
.collect(Collectors.toList);
if (holger.size() < old.size()) {
// ... appropriate error handling code ...
}
else {
return holger;
}
}
语句文本中。在使用参数方法时,您不需要这些引号,这也可以保护您免受issue Alex warned about的攻击(当用户字符串本身包含撇号时)。
UPDATE
答案 1 :(得分:0)
我认为您需要在查询中使用单引号将用户设为'string'
。另外,我一直使用set db = currentdb
而不是as
Public Sub testSub(user as string)
Dim db as DAO.Database
Dim sqlstr as String
set db = CurrentDB
sqlstr = "UPDATE tTable1 SET Field1 = '" & user & "' WHERE Field1 IS NULL;"
db.Execute sqlstr
End Sub
编辑: 正如@jarlh提到的我同意,我不认为方括号是必需的