0

ユーザーが(フォームの)送信ボタンをクリックした後に処理されるフォームからの操作を保存するために、Accessデータベースにバッチテーブルを作成しています。

私の唯一の懸念は、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')')

最終的には、バッチテーブルを反復処理し、フィールドのみを実行し、別のフィールドを更新してその実行を示しますが、フィールド自体が、文字列修飾子を失うことなく実行される SQL ステートメントと同種であるsqlことを確認したいと考えています。sql

編集済み (2012-08-13 @ 13:42pm CST)

このネスティングがどのように組み込まれているかを理解するために、次の方法があります。

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 ステートメントを構築します。いいえ、文字列修飾子の問題がどのように発生するかがわかります。

4

1 に答える 1

0

私があなたの質問を正しく理解しているなら、あなたはそれがそのまま実行できるような方法であなたのSQLステートメントを保存したいと思うでしょう。ただし、内部の一重引用符が邪魔になっています。外側の一重引用符を二重引用符に置き換えてみてください。

INSERT INTO tblBatch(act, sql) VALUES (0, "INSERT INTO tblGrpLoc (gid, txt) VALUES (2, 'Select * From tblInformation')")
于 2012-08-13T18:26:42.043 に答える