- ベストアンサー
VB.NETのOleDbCommandで文字列を操作する際にダブルクォーテーションの対処方法
- VB.NETのOleDbCommandを使用して文字列を操作する際に、文字列にダブルクォーテーションが入っている場合の対処方法を教えてください。
- 特に、mdbのT_テーブルの「名称」というフィールドにダブルクォーテーションが入ることがあり、その場合に「構文が不正です」エラーが発生してしまいます。
- 現在のプログラムでは、ダブルクォーテーションが入った文字列を正しく操作する方法がわかりません。どのように対処すればよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
たびたびすみません。ANo.1です。 ごめんなさい、Accessで直接試してみたんですが、副問合せは使わなくてもいけそうですね(汗) すみませんです… とりあえず、 表示名称 = Left( """ & Str_Hyouji & """,36) のあたりのクォーテーションを修正して実行しなおしてみてください。 (あと、Len_??? は数値でしょうから、出来ればCStrかCType(???,String)で 変換掛けておいた方がいいかもしれません)
その他の回答 (2)
- K-Sogacchi
- ベストアンサー率53% (50/93)
ANo.1です。すみません勘違いしてました。 で、そのUpdate文ですが、 Left(名称,… の「名称」ってのはフィールド名ですよね? そこにフィールド名を直接関連付けるには、副問合せを使う等しないと 不可能だと思います。 (副問合せの結果に直接関数を適用ってのは、やった事無いけど…普通に出来るのかなぁ?) 今回の場合は、「名称」を使う部分が多いので、先に該当の「名称」を取得して その文字列を直接編集した方が楽だと思います。 "update T_テーブル set 商品名称 = Left('" & meisyou & "', " & CStr(Len_Shohin) & … みたいな感じで。 (meisyou は、取得した文字列を格納した変数) あ、あと、SQL文で文字列の指定はシングルクォートですよ。 Left( """ & Str_Hyouji & """,36) とかは直さないといけません。 …ん? そもそもStr_Hyouji を「SQL文で」編集する必要は無いような…?
- K-Sogacchi
- ベストアンサー率53% (50/93)
"""(ダブルクォーテーション3つ)で、実際の文字列として " (ダブルクォーテーション1つ)を、 """"(同4つ)で実際には ""(同2つ)を指定する事になります。 試しに、 MessageBox.Show("""Test"""" ") を貼り付けたプログラムを実行してみて下さい。分かると思います。 なお、この書き方だと分かりにくい、という場合は、Chr(34) (=Chr(&H22)) を使うという手もあります。 例:MessageBox.Show(Chr(34) & "Test" & New String(Chr(&H22), 2))
補足
ご回答ありがとうございます。 それはわかるんですが、今回の場合はどのようにすればいいですか? あらかじめ全レコードで「名称」を検索してダブルクォーテーションが あるかどうかを判断して、その場合にどこかのフィールドにフラグをたてて UPDATEのときに読み飛ばすぐらいしか思いつかないのですが。。。 宜しくお願いします。
お礼
色々とありがとうございました。 まぁなんとかいけました。。。