• ベストアンサー

SQLの更新の時、記号 ’ について

SQLの更新で不明な点があります。 strSQL = "UPDATE LINK SET 備考 ='" & B & "' WHERE 工番=" & CStr(j) & ";" LINK の備考1に 変数Bの値を更新したいのですが この時 Bの中に 'の記号が入っていれば"オブジェクトが無効"と出てきます。 例えば 24' (24インチを意味する) と表示したいのです。 'の記号を変換するしか ないのでしょうか? ※ 質問内容が足りなければ再度 詳しく質問したいと思います。

  • cdma
  • お礼率36% (91/247)

質問者が選んだベストアンサー

  • ベストアンサー
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.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) & ";"

cdma
質問者

お礼

早速のご回答 ありがとうございました。 しかも、例文付きで 大変助かりました。 結果の方は そのまま使用させていただきました。 なんとかメインの問題は解決しました。 ※ というのは、他にも 疑問点が出てきましたので   別途質問させて頂きたいと思います。   そちらの方も ご回答 お願いできたら幸いです。  今後共 宜しくお願い致します。

その他の回答 (3)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

DAOやADOであれば、Parametersコレクション、Parameterオブジェクトを使用すれば、設定したい文字列の内容を気にすることなくレコードを更新できます

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.2

下記のようにしてください。 strSQL = "UPDATE LINK SET 備考 ='" & Replace(B,"'","''") & "' WHERE 工番=" & CStr(j) & ";" Replace(B,"'","''") の意味は、文字列変数Bのなかに"'"があったら、"''"に置換するという意味になります。

cdma
質問者

補足

回答ありがとうございます。 実施したのですが ゛コンパイルエラー Sub またはFunction が定義されていません ゛ と出てきます。 何か基本的なことが抜けているのでしょうか?

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.1

>例えば 24' (24インチを意味する) と表示したいのです。 この様にしてみてください。→ 24'' 書式で書けば、備考 = '24''' となります。

cdma
質問者

補足

ご回答 ありがとうございます。 早速やってみましたが実行できました。 もう1点教えてほしいのですが 元のデータを変更することなく 実行できる方法はあるでしょうか? 例えば、24' のデータがあれば、更新対象は24" と更新し 元のデータは24'のままにしておく。  (ちなみに、更新されるテーブルは一次的に使います) ロジックでは 項目中に 'が あれば " に変更する…? なければ、元のデータ中の'を全て "に変更しますが、どうでしょうか?

関連するQ&A

  • SQLの文章 羅列について

    SQLの文章を変更しようとしています。 更新対象の項目が増えてくるので1行の文章を分けたいのですが strSQL3 = "UPDATE LINK SET A ='" & a & "',B ='" & b & "' WHERE 工番=" & CStr(j) & ";" の1行の文章を 下記の通りしたのですが できませんでした。何故でしょうか? strSQL3 = "UPDATE TPK_LINK SET" strSQL3 = strSQL3 & "A ='" & a & "'" strSQL3 = strSQL3 & ",B ='" & b & "'" strSQL3 = strSQL3 & "WHERE 工番=" & CStr(j) & ";"

  • SQLの選択処理について

    SQLの選択処理が上手くいきません Dim j As Integer と宣言します。 j=1 とします。  strSQL = "SELECT * FROM LINK WHERE 工番 =j;" だと 上手くいきません。ちなみに  strSQL = "SELECT * FROM LINK WHERE 工番 =1;" だと上手くいきました。   昨日、更新処理時については教えて頂いたのですが 上記は何故上手くいかないのでしょうか?  変数が数字で設定しているから?

  • SQLで 更新できない

    ACCESSでSQLを使っています。 その中で 更新(UPDATE)できないものがあります。 (1) SQLでは 1行を複数に分けると上手くいったことあります。  そういうルールは あるのでしょうか? VB上 (2)実行したい例文は strSQL="UPDATE table SET A = B WHERE C=2 " この時、Bに ‘シングルクォーテーション? を加えると Bが 更新されるのですが 実際は Bは変数なので Bの値をAに更新したいのです。 けれど エラーになってしまいます。 1回 フォームのテキストBOXに入れてから  A= Me.BB のようにしたのですが ダメでした。 部分的にしか 表示していないのですが 何か気づく点があればお願いします。

  • SQLの同時実行

    SQL文について質問なんですが、下記のようなテーブルがあった場合に『2を3に、3を2にする』というクエリを作ってみましたが、どうもうまくいきません。 ┌─┬──┐ │No│項目│ ├-┼──┤ │1│ああ│ ├─┼──┤ │2│いい│ ├─┼──┤ │3│うう│ └─┴──┘ strSQL1=UPDATE テーブル名 SET No = '2' WHERE No = '3' strSQL2=UPDATE テーブル名 SET No = '3' WHERE No = '2' これをASPから実行する場合は cn.Execute(strSQL1) cn.Execute(strSQL2) とすると、先にstrSQL1が実行されテーブルが更新された後にstrSQL2が実行される ため、 ┌─┬──┐ │No│項目│ ├─┼──┤ │1│ああ│ ├─┼──┤ │3│いい│ ├─┼──┤ │3│うう│ └─┴──┘ となってしまいます。『2つの更新を同時に実行させる』もしくは『2つの更新クエリ1つにする』というようなことはできないものでしょうか?

  • SQL文の作成について

    前の質問が解決してないのに、すいません。 SQL文を作成して、関数に投げると配列で 実行結果が返ってくるらしいのですが。 SQL文作成時に変数をWHERE節に組み込む 記述の仕方が自信ないです。以下のような感じです。 Dim srtSql As String Dim Key_Id As String Call Key_Get(Key_Id)  ’キーを取得 strSql = strSql & ”Select Tb*” strSql = srtSql & ” From Tb ” strSql = strSql & ”Where ” srtSql = strSql & ”Tb_Key_Id = ’” strSql = strSql & Key_id & ”’” のように(Accessだとこんな感じ【キーはSring】)ダブルクォーテーションの外に書いてよいのでしょうか?

  • VBとアクセスでSQL文に変数を使いたいのですが

    したいことはレコードの挿入をSQL文で変数を使用して処理したいのですがうまく動作してくれません StrSQL_1 = _ "insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _ "values (7,'(変数1)','(変数2)','(変数3)')" 変数の部分が置き換わりません、いろいろ調べてみたのですがどうもわかりませんvaluesでは変数を使えないのでしょうか? もしそうだとするとどのようにすればレコードを挿入するSQL文で変数を利用できるのかをおしえていただけないでしょうか

  • アクセス97 モジュール 変数について

    変数について不明な点があります。 Public A As String Public B As String とモジュールの最上段に 宣言しました strSQL = strSQL & ",備考1 ='" & pfncReplaceString1(A, "'", "''") & "'" strSQL = strSQL & ",備考2 ='" & pfncReplaceString2(B, "'", "''") & "'" この時点では AとBにはそれぞれ値が入っているのですが pfncReplaceString1とpfncReplaceString2に飛んだ時にBの方は""(何も入っていない状態)になっています。 何が違いがあるのでしょうか? 変数に値が入っていたのに消えてしまう 状態です。

  • SQLでの変数の扱いについて

    VBを利用してのSQL文に変数を使いたいのですが記述方法が良くわかりません。 まず dim a as string dim b as integer dim c as integer a="AAAA" b=10 c=23500 として テーブルZの項目1が nvarchar 項目2が tinyint 項目3がrealであった場合 sql文の記述方法をWebで探していると 文字列変数ならシングルクォーテーションでくくって代入 数値変数ならダイレクトに代入というようにとれるところがあったので下記の 様に記述すると更新されません sqlstr=("UPDATE テーブルZ set 項目1='a',項目2=b,項目3=c where 項目=1") 下記のように分割してそれぞれひとつづつのテストすると更新できます sqlstr=("UPDATE テーブルZ set 項目1=" & a & " where 項目=1") sqlstr=("UPDATE テーブルZ set 項目2='" & b & "' where 項目=1") sqlstr=("UPDATE テーブルZ set 項目2='" & c & "' where 項目=1") 上記の要領で1つにまとめると出来ないので,どのように書けばよいのでしょうか よろしくお願い致します

  • こんなSQL文

    Oracle8.1.7を使用しております。 以下のようなテーブルに対し、1行目と2行目を削除するSQL文を書きたいのですが、思いつきません。どなたか、アドバイスいただけないでしょうか? 表名:A   B | C ――――――――   2 | 10   2 | 1   1 | 10   1 | 1   1 | 11   1 | 2   1 | 1   3 | 10   2 | 3 変数として、P1=1とP2=2があります。(これは、SQL文の中に直接書くものとします。) ここで、SELECT B,C FROM A WHERE B=1;とSELECT B,C FROM A WHERE B=2;を実行すると、次のようになります。   B | C     B | C ――――――――― ―――――――――   1 | 10    2 | 10   1 | 1     2 | 1   1 | 11    2 | 3   1 | 2   1 | 1 ここで、それぞれの表を見ると、Cの値が一致している部分があります。この一致していて、Bが2の行を削除したいのですが、SQL1文では無理でしょうか? 最近、SQLには慣れてきたつもりだったのですが、こんなとこでつまずくとは・・・どうぞよろしくお願いします。

  • SQL Developerでクエリ実行

    select * from テーブルA where カラムA2 = :バインド変数 select * from テーブルB where カラムB2 = :バインド変数 SQL Developerでエディタに記述した複数のSQLを一度に実行する際に ①同じ名前のバインド変数であっても何度も値を聞いてくるのを1回で済ませたい ②SQLごとにひらく問い合せ結果について名前が問い合せ結果1、問い合せ結果2だとわかりづらいので、固有の名前をクエリ実行時に自動でつけるようにしたい よろしくお願いします。

専門家に質問してみよう