我正在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是同源的要执行的语句,不会丢失字符串限定符。
为了让您了解如何将此嵌套合并到此处:
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语句。不,你可以看到我如何出现字符串限定符问题。
答案 0 :(得分:0)
如果我正确理解了您的问题,您希望以可以按原样运行的方式存储SQL语句。但是,内部单引号正在阻碍。尝试用双引号替换外部单引号:
INSERT INTO tblBatch(act, sql) VALUES (0, "INSERT INTO tblGrpLoc (gid, txt) VALUES (2, 'Select * From tblInformation')")