当循环的 i
等于撇号时,以下代码将失败。
For i = 1 To 127
fillTable = "INSERT INTO whiteTable VALUES ('" & Chr(i) & "field', 'fie" & Chr(i) & "ld', 'field" & Chr(i) & "')"
DoCmd.RunSQL fillTable
Next i
我认为当chr(i)
等于引号时也会出现问题。我搜索了添加撇号的方法,并想出了使用双引号 ""x""或双撇号 ''x''。由于某种原因,这不起作用,因为我不断收到错误。此外,我假设这个解决方案仅在我知道有撇号时才适用,但这里只有当i
为39或34时才会出现问题。你知道吗?知道在代码中使用这些字符的方法吗?
如果没有办法做到这一点,我将从循环中排除 39 和 34 (', ")。还有其他字符会给我带来问题吗(例如 `)?
最佳答案
您可以使用QueryDef
类来避免撇号问题。即使有任何其他字符会给您带来问题,此类也可确保它们被正确转义。
下面是可以实现这一目的的代码:
Sub test()
Dim i As Long
Dim qry As String
Dim qryDef As QueryDef
qry = "INSERT INTO whiteTable VALUES ([a], [b], [c])"
Set qryDef = CurrentDb.CreateQueryDef("FillTable", qry)
For i = 1 To 127
With qryDef
.Parameters("a").Value = Chr(i) & "field"
.Parameters("b").Value = "fie" & Chr(i) & "ld"
.Parameters("c").Value = "field" & Chr(i)
Call .Execute(dbFailOnError)
End With
Next i
End Sub
关于vba - 在代码中插入撇号或引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33783748/