'
データベースをテストしていたところ、データベースのテキスト エントリに文字 (一重引用符)が含まれていると問題が発生することに気付きました。現時点での私の解決策は、文字列に対する .execute 操作の前に .exe を呼び出すことescape(string, "'", " "'" ")
です。
以下の要約例:
qr = "INSERT INTO tblExample VALUES ( " & "'" & me.testparam & "'" & ");"
qr = Replace(qr, "'", " "'" ")
db.execute qr
'also tried qr = "INSERT INTO tblExample VALUES ( " & "'" & replace(me.testparam,"'"," ") & "'" & ");"
これは、 などの値からのエラーを防ぐための正しい回避策であると私が想定したものでしたTourette's
。
これには2つの問題があります。まず第一に、それは機能していません。2 つ目は、コード内に db.execute qr というステートメントを呼び出す場所がアプリ全体で 50 か所あります。ここで、qr は一重引用符を含む可能性のある文字列です。テーブル内のフィールドに一重引用符を含める必要があるため、単にスペースなどに置き換えることはできません。
2 つの部分からなる質問:
Replace
クエリとして実行されるすべての文字列を呼び出すすべてのコードを実行するよりも良い解決策はありますか?現在の実装が失敗するのはなぜですか? - 一重引用符をスペースにエスケープしても、クエリ式で構文エラーが発生します。