- ベストアンサー
SQLの更新の時、記号 ’ について
SQLの更新で不明な点があります。 strSQL = "UPDATE LINK SET 備考 ='" & B & "' WHERE 工番=" & CStr(j) & ";" LINK の備考1に 変数Bの値を更新したいのですが この時 Bの中に 'の記号が入っていれば"オブジェクトが無効"と出てきます。 例えば 24' (24インチを意味する) と表示したいのです。 'の記号を変換するしか ないのでしょうか? ※ 質問内容が足りなければ再度 詳しく質問したいと思います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
再び、#2の者です。 > ゛コンパイルエラー Sub またはFunction が定義されていません ゛ と出てきます。 あれ? VBのバージョンは何でしょうか? Replace関数はVB6.0からサポートされた関数ですので、VB5.0以前でしたら、コンパイルエラーになってしまうかもしれません。 もし、VB5.0以前でしたら、Replace関数に代わるものを自前で作成する必要があります。 下記のプロシージャを定義し、 Public Function pfncReplaceString(vntSource As Variant, str1 As String, str2 As String) As String Dim strTmp As String Dim intSt As Integer If IsNull(vntPar) Then strTmp = "" Else strTmp = CStr(vntPar) End If intSt = 1 Do intSt = InStr(intSt, strTmp, str1) If intSt = 0 Then Exit Do End If strTmp = Left(strTmp, intSt - 1) & str2 & Mid(strTmp, intSt + Len(str1)) intSt = intSt + Len(str2) Loop pfncReplaceString = strTmp End Function 下記のように、pfncReplaceStringを呼んでください。 strSQL = "UPDATE LINK SET 備考 ='" & pfncReplaceString(B,"'","''") & "' WHERE 工番=" & CStr(j) & ";"
その他の回答 (3)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
DAOやADOであれば、Parametersコレクション、Parameterオブジェクトを使用すれば、設定したい文字列の内容を気にすることなくレコードを更新できます
- mfuku
- ベストアンサー率50% (173/345)
下記のようにしてください。 strSQL = "UPDATE LINK SET 備考 ='" & Replace(B,"'","''") & "' WHERE 工番=" & CStr(j) & ";" Replace(B,"'","''") の意味は、文字列変数Bのなかに"'"があったら、"''"に置換するという意味になります。
補足
回答ありがとうございます。 実施したのですが ゛コンパイルエラー Sub またはFunction が定義されていません ゛ と出てきます。 何か基本的なことが抜けているのでしょうか?
- BlueRay
- ベストアンサー率45% (204/453)
>例えば 24' (24インチを意味する) と表示したいのです。 この様にしてみてください。→ 24'' 書式で書けば、備考 = '24''' となります。
補足
ご回答 ありがとうございます。 早速やってみましたが実行できました。 もう1点教えてほしいのですが 元のデータを変更することなく 実行できる方法はあるでしょうか? 例えば、24' のデータがあれば、更新対象は24" と更新し 元のデータは24'のままにしておく。 (ちなみに、更新されるテーブルは一次的に使います) ロジックでは 項目中に 'が あれば " に変更する…? なければ、元のデータ中の'を全て "に変更しますが、どうでしょうか?
お礼
早速のご回答 ありがとうございました。 しかも、例文付きで 大変助かりました。 結果の方は そのまま使用させていただきました。 なんとかメインの問題は解決しました。 ※ というのは、他にも 疑問点が出てきましたので 別途質問させて頂きたいと思います。 そちらの方も ご回答 お願いできたら幸いです。 今後共 宜しくお願い致します。