- ベストアンサー
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)
- Visual Basic
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Aの前、WHEREの前に半角スペースを入れてみてください。 こういった場合はつながったSQLをどこかに出力して試験するのがコツです。
その他の回答 (2)
- mfuku
- ベストアンサー率50% (173/345)
#1の方が指摘されているとおり、WHEREの前に加えて、"SET"と"A="の間にもスペースがありません。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
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インチを意味する) と表示したいのです。 'の記号を変換するしか ないのでしょうか? ※ 質問内容が足りなければ再度 詳しく質問したいと思います。
- ベストアンサー
- Visual Basic
- SQLの選択処理について
SQLの選択処理が上手くいきません Dim j As Integer と宣言します。 j=1 とします。 strSQL = "SELECT * FROM LINK WHERE 工番 =j;" だと 上手くいきません。ちなみに strSQL = "SELECT * FROM LINK WHERE 工番 =1;" だと上手くいきました。 昨日、更新処理時については教えて頂いたのですが 上記は何故上手くいかないのでしょうか? 変数が数字で設定しているから?
- ベストアンサー
- Visual Basic
- 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 のようにしたのですが ダメでした。 部分的にしか 表示していないのですが 何か気づく点があればお願いします。
- ベストアンサー
- Visual Basic
- 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つにする』というようなことはできないものでしょうか?
- ベストアンサー
- Microsoft ASP
- こんな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初心者です。OracleのSQLについて質問があります。 「update Aテーブル set Aテーブル.構成順 = (select Bテーブル.順番 from Bテーブル where Aテーブル.ID = Bテーブル.ID and Aテーブル.種類 = Bテーブル.種類CD)」 こういった内容のSQLって発行できるんでしょうか。 Bテーブル.種類CDの"種類CD"で「コンポーネント"種類CD"を宣言してください」というエラーになります。 書き方が分かりません。。 すいませんが教えていただきたく思います。 よろしくお願いいたします。
- 締切済み
- Oracle
- 【至急】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 Server
- 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)'レコードセットのオープン アドバイスお願いいたします
- ベストアンサー
- Microsoft ASP
- 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 + "**** = '" & **** & "' ;" ↑ここに条件をどのように持てばいいのでしょうか? ※ ここで、名前の項目ではキーとなる項目は得られません。 今回は 何番目のデータを取得したい ということが可能かどうか 教えて頂きたいと思います。
- ベストアンサー
- オフィス系ソフト
お礼
ありがとうございました。 おかげさまで 上手く行きました。 今後とも宜しくお願いします。