シングルコーテーションをSQLでDBにUPするには?

解決


ヒッキー  2004-06-25 02:15:38  No: 114251

VBからSQL文を使って、ACCESSのデータベースにUPするときに、
テキストボックスにシングルコーテーションが入力されている場合、
エラーになってしまって困ってしまいました(--;)

例えばこんな感じです↓

Text1.text = "B'z"

A = "SELECT * FROM テーブル名 WHERE NAME = '" & Text1.text & "';"

すると、テキストボックスに  ’があると、’の数が合わなくなってエラーになると思われますが、
できるなら、テキストボックスに入力する人の手をわずらわすことなく
入力できるようにしたいと思っています。

もし不可能であれば、’は入力できません、などのメッセージボックスを表示させる方法でも
教えていただけるとうれしいです。よろしくお願いします。m(_ _)m
(VB6 SP5 WIN2000)


特攻隊長まるるう  2004-06-25 02:31:19  No: 114252

’を2つ続けて書けば可能だと思います(少なくとも SQL Server では可能)
テキストボックスの文字列に’が含まれているか調べて文字列編集してください。


nanashi  2004-06-25 02:34:06  No: 114253

未確認ですが、Replaceで「'」を「''」にしてみるとか。


ヒッキー  2004-06-25 03:39:09  No: 114254

早速のご解答ありがとうございます。

特攻隊長まるるうさんとnanashiさんの合わせ技一本で解決いたしました(^o^)/~

どちらかが欠けていたら、解決できませんでした。

本当にありがとうございました。久々に感動しました…(T▽T)


すらいむ  2005-08-11 02:22:12  No: 114255

自分も同じことで  詰まってます。

    'SQLのクリア
    prStrSql = ""
    
    'SQLの指定
    prStrSql = "UPDATE SYAIN SET V_SYAIN_NM = ''" & txtNm.Text & "'', N_SYAIN_AGE = " & txtAge.Text & " WHERE N_SYAIN_NO = " & txtNo.Text & ""
    
    Replace(prStrSql,"'",""")
    
    '画面の内容で社員情報テーブルを更新
    prCn.Execute prStrSql

これだとうまくいきません。
どうすればいいでしょうか?


特攻隊長まるるう  2005-08-11 02:39:49  No: 114256

テキストボックスの中の(データに該当する)文字列のみ
Replaceで「'」を「''」にして下さい。

SQL文の中でシングルコーテーションは意味を持ちます。全部置き換えちゃったら
文法がぐちゃぐちゃになって実行できなくて当然です。


特攻隊長まるるう  2005-08-11 02:44:19  No: 114257

…あ、しかもシングルコーテーションを2回繰り返して書くのと
ダブルコーテーションは違いますので、念のため。
>Replace(prStrSql,"'",""") '←間違い
Replace(txtNm.Text ,"'","''") '←正解


すらいむ  2005-08-11 03:31:47  No: 114258

お答えありがとうございます。

回答された通りにしてみたところ  エラーメッセージで「=」が要求されたので

    'SQLのクリア
    prStrSql = ""
    
    'SQLの指定
    prStrSql = "UPDATE SYAIN SET V_SYAIN_NM = '" & txtNm.Text & "', N_SYAIN_AGE = " & txtAge.Text & " WHERE N_SYAIN_NO = " & txtNo.Text & ""
            
    Dim inputStr As String
    
    inputStr = txtNm.Text
    
    txtNm.Text = Replace(inputStr, "'", "''")
            
    '画面の内容で社員情報テーブルを更新
    prCn.Execute prStrSql

こんな感じにしたのですが  これでも「SQL command not properly ended」というエラーが出ます。


いな  2005-08-11 05:02:44  No: 114259

SQL文のエスケープ処理について調べてください。

特殊文字は2つ続けて記述する。


LESIA  2005-08-11 06:40:45  No: 114260

コードの書く順番が違うのでは?

    Dim inputStr As String
    
    inputStr = txtNm.Text
    
    txtNm.Text = Replace(inputStr, "'", "''")
            
    'SQLの指定
    prStrSql = "UPDATE SYAIN SET V_SYAIN_NM = '" & txtNm.Text & "', N_SYAIN_AGE = " & txtAge.Text & " WHERE N_SYAIN_NO = " & txtNo.Text & ""
            
    '画面の内容で社員情報テーブルを更新
    prCn.Execute prStrSql


銀河系軍団  2005-08-11 20:07:51  No: 114261

'表示された文字列
    Dim StrNm As String
    
    '氏名テキストと置き換える
    StrNm = txtNm.Text
    
    '氏名テキストに表示された「'」を「''」に置き換える
    txtNm.Text = Replace(StrNm, "'", "''")
    
    '氏名テキストに表示された「"」を「""」に置き換える
    txtNm.Text = Replace(StrNm, "'", """")
        
    'SQLのクリア
    prStrSql = ""
    
    'SQLの指定
    prStrSql = "UPDATE SYAIN SET V_SYAIN_NM = '" & txtNm.Text & "', N_SYAIN_AGE = " & txtAge.Text & " WHERE N_SYAIN_NO = " & txtNo.Text & ""
        
    '画面の内容で社員情報テーブルを更新
    prCn.Execute prStrSql

上記で解決しました。
コードの記述順番とは  チョー基本的なことでミスってました^^;
ありがとうございました。


銀河系軍団  2005-08-17 00:05:12  No: 114262

すいません。
解決していませんでした。

>'氏名テキストに表示された「'」を「''」に置き換える
>txtNm.Text = Replace(StrNm, "'", "''")
>
>'氏名テキストに表示された「"」を「""」に置き換える
>txtNm.Text = Replace(StrNm, "'", """")

'氏名テキストに表示された「'」を「''」に置き換える
txtNm.Text = Replace(txtNm.Text, "'", "''")
    
'氏名テキストに表示された「"」を「""」に置き換える
txtNm.Text = Replace(txtNm.Text, """, """")  ・・・※

こんな感じにしなければいけないのですが
※のところでコンパイルエラーになってしまいます。
どうすればいいでしょうか?


名無し  2005-08-17 01:49:07  No: 114263

おまいは誰だw


LESIA  2005-08-17 02:03:29  No: 114264

SQLでシングルコーテーションを使うときは2つ続けて書くのと同じように
VBの文字列内でダブルコーテーションを使うときは2つ続けて書きます。

氏名テキストに表示された「"」を「""」に置き換える
txtNm.Text = Replace(txtNm.Text, """", """""")


銀河系軍団  2005-08-17 02:35:22  No: 114265

ありがとうございました


ななし  2005-08-17 22:40:38  No: 114266

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200405/04050003.txt

>銀河系軍団さん

↑のスレッドでも同様なのですが、他人の質問を利用してご自分の質問を投げる(しかも勝手に解決する)のは止めて下さい。
全く掲示板のルールに則っていないばかりでなく、掲示板利用者の混乱の元になるだけです。
こう指摘すると、「初心者なもので…」とおっしゃられるかもしれませんが、質問の内容ならともかく掲示板利用のルールについては、言語習熟の度合いに関係なく対応が可能なはずです。
細かいことをうるさいと思われるかもしれませんが、上記のような小さなルール違反が積み重なって、ご自分の利益をも損失させることをご熟慮下さい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加