ユーザーが(フォームの)送信ボタンをクリックした後に処理されるフォームからの操作を保存するために、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 ステートメントを構築します。いいえ、文字列修飾子の問題がどのように発生するかがわかります。