在代码中插入撇号或引号

时间:2015-11-18 15:16:47

标签: vba char

当循环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(',")。是否有其他字符会给我带来问题(例如`)?

1 个答案:

答案 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