在备注/文本字段中保存SQL语句

时间:2012-08-13 17:42:25

标签: access-vba ms-access-2010

我正在Access数据库中构建一个Batch表,以便在用户单击提交按钮后(在表单上)保存要处理的表单中的操作。

我唯一关心的是SQL语句本身将包含文本限定符。当我提交要存储在数据库中的sql语句时,我必须将sql字符串包装在文本限定符中,并且我希望确保在批处理表中执行Insert语句时不会转义语句限定符。

实施例: SQL语句(操作语句)

INSERT INTO tblGrpLoc (gid, txt) VALUES (2, 'Select * From tblInformation')

SQL语句(批量存储)

INSERT INTO tblBatch(act, sql) VALUES (0, 'INSERT INTO tblGrpLoc (gid, txt) VALUES (2, 'Select * From tblInformation')')

最终我会遍历Batch表并只执行字段sql并更新另一个字段来表示它的执行但我想确保sql字段本身与sql是同源的要执行的语句,不会丢失字符串限定符。

已编辑(2012-08-13 @ C​​ST时间下午13:42)

为了让您了解如何将此嵌套合并到此处:

Public Sub BatchAdd(ByRef db As Database, action As BatchAction, sql As String)
    Dim bsql As String
    Dim bact As Integer: bact = CInt(action)
    bsql = SQLInsert("tblBatchTransaction", _
                    "action, txt", _
                    (CStr(bact) & ",'" & sql & "'"))
    db.Execute bsql
End Sub

SLQInsert只是构建一个SQL Insert语句。不,你可以看到我如何出现字符串限定符问题。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您希望以可以按原样运行的方式存储SQL语句。但是,内部单引号正在阻碍。尝试用双引号替换外部单引号:

INSERT INTO tblBatch(act, sql) VALUES (0, "INSERT INTO tblGrpLoc (gid, txt) VALUES (2, 'Select * From tblInformation')")