当循环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"" ,或双撇号,''''出于某种原因,这不起作用,因为我一直在收到错误。此外,我认为这个解决方案只适用于我知道有撇号的情况,但只有在i
为39或34时才会出现问题。你知道吗?在代码中使用这些字符的方法?
如果无法执行此操作,我将从循环中排除39和34(',")。是否有其他字符会给我带来问题(例如`)?
答案 0 :(得分:2)
您可以使用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