• ベストアンサー

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) & ";"

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

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

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

Aの前、WHEREの前に半角スペースを入れてみてください。 こういった場合はつながったSQLをどこかに出力して試験するのがコツです。

cdma
質問者

お礼

ありがとうございました。 おかげさまで 上手く行きました。 今後とも宜しくお願いします。

その他の回答 (2)

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

#1の方が指摘されているとおり、WHEREの前に加えて、"SET"と"A="の間にもスペースがありません。

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

SETと"A ='の間と、b & "'" とWHEREの間のスペースがありません。 Debug.Print strSQL3 で、生成したSQL文字列を自分で確認しましょう。

関連するQ&A

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

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

  • 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文

    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

    SQLの初心者です。 次のようなテーブルがあるとします。 項目:A , B , C , D このテーブル合計を求めたいのです。 条件は、 同一テーブルでB=10の時のAの合計とD=10の時のCの合計の合計です。 B=10の時のAの合計は「sql sum(A) from テーブル where B=10」となります。 D=10の時のCの合計は「sql sum(C) from テーブル where D=10」となります。 この2つの合計を求めたいのです。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • SQLの書き方を教えてください。

    初めまして。sql初心者です。OracleのSQLについて質問があります。 「update Aテーブル set Aテーブル.構成順 = (select Bテーブル.順番 from Bテーブル where Aテーブル.ID = Bテーブル.ID and Aテーブル.種類 = Bテーブル.種類CD)」 こういった内容のSQLって発行できるんでしょうか。 Bテーブル.種類CDの"種類CD"で「コンポーネント"種類CD"を宣言してください」というエラーになります。 書き方が分かりません。。 すいませんが教えていただきたく思います。 よろしくお願いいたします。

  • 【至急】SQLの結合について教えてください。

    select * from A where ab = '1' and cd = '2' select ef from B where ab = '1' and cd = '2' and ef = '3' 至急質問させてください。 上記SQLを結合したいです。(Oracleです) 取得したいデータはAのテーブルの全項目で、 取得条件として、Bのテーブルの項目ef = '3' だったらという条件を加えたいです。 キー項目は両テーブルとも同じ(ab, cd)です。 どのようなSQLがスマートでしょうか。。 無知で申し訳ございませんが、ご教授いただけますと幸いです。 よろしくお願いいたします。

  • SQL文の連結が、うまくいきません

    いつもお世話になっております。  現在、SQL文生成プログラムを作成しているのですが  エラーメッセージ 「Microsoft OLE DB Provider for SQL Server (0x80040E14)  '.' 付近に不適切な構文があります。」  表示されて、どうしても解決出来ません  ソースを記載しますのでアドバイス頂けないでしょうか?  デバッガーみたいな事をさせてしまい、本当に申し訳ありません  開発者自分一人(ほぼ初めて)で、どうにも進みませんでしたので  お願いいたします。  ※--ASPのデバッグに関して  もう一つお聞きしたいのですが (出来ればこちらの質問も答えてくださると幸いです)  皆さんは、ASPのデバッグをどの様に行っていますか?  VB6.0やVBAの場合は、ソースが不完全やエラーでも  「F8」を押して、ソースの途中まで稼働させて  「現在格納されている変数の中身」等を確認して 割とエラー解決もスムーズに出来ましたが、ASPではそれが出来ないため  難航しています(Line*** と エラーメッセージだけを頼りに)  皆さんはASPの場合、どの様にエラー解消されていますか?  (どうにかして、自分一人でも安定して成果をあげていきたいので)  我流でも結構ですので、是非アドバイスお願いします SQL生成ソース '--SQL生成  strSQL = "select * from STA040, STA500M7"  '--SQL作成(抽出場合分け)  if check = "Day" then   strSQL = strSQL + "where STA500M7.CODE040 = STA040.CODE"  '--期日空白処理   Blank_out J_days_st,N_days_st,M_days_st,J_days_ed,N_days_ed,M_days_ed  '--受注日BetWeen   if J_days_st <> "" and J_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_1 BETWEEN " & J_days_st_sql & " and " & J_days_ed_sql & " "  '--受注日start○,End×   Elseif J_days_st <> "" and J_days_ed = "" then    strSQL = strSQL + " and STA500M7.YYMMDD_1 >= " & J_days_st_sql & " "  '--受注日start×,End○   Elseif J_days_st = "" and J_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_1 <= " & J_days_st_sql & " "  '--受注日start×,End×   Elseif J_days_st = "" and J_days_ed = "" then   End if  '--納期BetWeen   If N_days_st <> "" and N_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_3 BETWEEN " & N_days_st_sql & " and " & N_days_ed_sql & " "  '--受注日start○,End×   Elseif N_days_st <> "" and N_days_ed = "" then    strSQL = strSQL + " and STA500M7.YYMMDD_3 >= " & N_days_st_sql & " "  '--受注日start×,End○   Elseif N_days_st = "" and N_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_3 <= " & N_days_st_sql & " "  '--受注日start×,End×   Elseif N_days_st = "" and N_days_ed = "" then   End if  '--見積日BetWeen   If M_days_st <> "" and M_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_10 BETWEEN " & M_days_st_sql & " and " & M_days_ed_sql & " "  '--見積日start○,End×   Elseif M_days_st <> "" and M_days_ed = "" then    strSQL = strSQL + " and STA500M7.YYMMDD_10 >= " & M_days_st_sql & " "  '--納期start×,End○   Elseif M_days_st = "" and M_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_10 <= " & M_days_st_sql & " "  '--納期start×,End×   Elseif M_days_st = "" and M_days_ed = "" then   End if 'strSQL = strSQL + "order by sta500m7.code ASC" 'strSQL = "select * from STA040,STA500M7 where STA500M7.CODE040 = STA040.CODE and STA500M7.YYMMDD_3 >= " & hiduke & " " 'strSQL = strSQL + " order by sta500m7.code DESC;"    End if    '↓ここがエラーだと表示されます(おそらくSQLが問題かと)    Set objRS = objCon.Execute(strSQL)'レコードセットのオープン  アドバイスお願いいたします

  • ACCESS97 のモジュールの中 何番目かの データを取得したい

    ACCESS97 のモジュールの中で SQLを使用しています。 SQLを使用して あるテーブルの任意のレコードを選択したいのです。 例えば テーブルAが下記のようにあるとします。 項目 名前 番号 A 001 B 003 D 004 という場合に名前Bの番号003を取得したいのです。 データとしては、"2"番目の2 は取得可能です。  (フォーム上のテキストBOXで入力) Set DATABASE = CurrentDb() strSQL = "SELECT * FROM テーブルA WHERE " strSQL = strSQL + "**** = '" & **** & "' ;"     ↑ここに条件をどのように持てばいいのでしょうか? ※ ここで、名前の項目ではキーとなる項目は得られません。   今回は 何番目のデータを取得したい ということが可能かどうか    教えて頂きたいと思います。

専門家に質問してみよう