Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1474 / 2272 ツリー ←次へ | 前へ→

【6895】SQL文で構文の誤り みつ 05/12/3(土) 14:35 質問[未読]
【6898】Re:SQL文で構文の誤り 中西 健 05/12/3(土) 23:09 回答[未読]
【6899】Re:SQL文で構文の誤り みつ 05/12/5(月) 9:03 質問[未読]
【6901】Re:SQL文で構文の誤り 中西 健 05/12/5(月) 10:14 回答[未読]
【6913】Re:SQL文で構文の誤り みつ 05/12/5(月) 18:14 質問[未読]
【6914】Re:SQL文で構文の誤り 中西 健 05/12/5(月) 20:17 回答[未読]
【6987】Re:SQL文で構文の誤り みつ 05/12/16(金) 14:53 質問[未読]
【6993】Re:SQL文で構文の誤り 中西 健 05/12/17(土) 23:27 回答[未読]
【6996】Re:SQL文で構文の誤り みつ 05/12/19(月) 9:01 質問[未読]
【6997】Re:SQL文で構文の誤り 小僧 05/12/19(月) 10:51 回答[未読]
【6998】Re:SQL文で構文の誤り みつ 05/12/19(月) 12:47 お礼[未読]

【6895】SQL文で構文の誤り
質問  みつ  - 05/12/3(土) 14:35 -

引用なし
パスワード
   ACCESS2002、WinXPなのですが
以下のSQL文で構文の誤りがあるとのメッセージが出ます。
初心者なのですが、どなたか宜しく教えて下さい。
多分アスタリスクあたりかとは思っているのですが・・・

xSQL10 = "INSERT INTO WT_個別原価管理表 ( 工事番号 ) " & _
     "SELECT T_工事台帳.工事番号 " & _
     "FROM T_工事台帳 LEFT JOIN T_営業所マスタ " & _
     "ON T_工事台帳.工番コード=T_営業所マスタ.工番コード " & _
     "WHERE (((T_工事台帳.営業所コード) Like '*' & Forms!F_Main!営業所コード & '*') " & _
     "And ((T_工事台帳.売上修正損益)='0' " & _
     "Or (T_工事台帳.売上修正損益) Is Null) " & _
     "And ((T_営業所マスタ.工番管理者) Like '*' & Forms!F_Main!工番管理者 & '*') " & _
     "And ((Format(T_工事台帳!処理工完日,'yyyy/mm/dd'))>=Forms!F_Main!A " & _
     "And (Format(T_工事台帳!処理工完日,'yyyy/mm/dd'))<=Forms!F_Main!B) " & _
     "And ((Format(T_工事台帳!受注日,'yyyy/mm/dd'))<=Forms!F_Main!B)) " & _
     "Or (((T_工事台帳.営業所コード) Like '*' & Forms!F_Main!営業所コード & '*') " & _
     "And ((T_工事台帳.売上修正損益)='0' Or (T_工事台帳.売上修正損益) Is Null) " & _
     "And ((T_営業所マスタ.工番管理者) Like '*' & Forms!F_Main!工番管理者 & '*') " & _
     "And ((Format(T_工事台帳!処理工完日,'yyyy/mm/dd'))="") " & _
     "And ((Format(T_工事台帳!受注日,'yyyy/mm/dd'))<=Forms!F_Main!B)) " & _
     "Or (((T_工事台帳.営業所コード) Like '*' & Forms!F_Main!営業所コード & '*') " & _
     "And ((T_工事台帳.売上修正損益)='0' " & _
     "Or (T_工事台帳.売上修正損益) Is Null) " & _
     "And ((T_営業所マスタ.工番管理者) Like '*' & Forms!F_Main!工番管理者 & '*') " & _
     "And ((Format(T_工事台帳!処理工完日,'yyyy/mm/dd'))>Forms!F_Main!B) " & _
     "And ((Format(T_工事台帳!受注日,'yyyy/mm/dd'))<=Forms!F_Main!B));"

DoCmd.RunSQL xSQL10

【6898】Re:SQL文で構文の誤り
回答  中西 健  - 05/12/3(土) 23:09 -

引用なし
パスワード
    こんばんはみつさん。
 & Forms!F_Main!営業所コード &を囲むダブルコーテーションが抜けていると思います。
 
"WHERE (((T_工事台帳.営業所コード) Like '*'" & Forms!F_Main!営業所コード & "'*') "

 上記以外にも何箇所か同じパターンで修正しなければなりません。
 蛇足ですが、DoCmd.RunSQL xSQL10の行の代わりにDebug.Print xSQL10に変えて実行するとイミディエイトウィンドウにSQL文が表示されます。クエリを新規作成し、表示メニューでSQLビューを表示させて、先ほどのSQL文をコピー&ペーストして実行すると間違いの箇所がわかりやすいです。私はときどきこのような方法でデバッグしています。

【6899】Re:SQL文で構文の誤り
質問  みつ  - 05/12/5(月) 9:03 -

引用なし
パスワード
   ご指摘ありがとうございます。
以下のように修正して実行してみましたが改善されません。
あと営業所コードのコードの部分が実行すると自動的に半角から全角になります。

xSQL10 = "INSERT INTO WT_個別原価管理表 ( 工事番号 ) " & _
     "SELECT T_工事台帳.工事番号 " & _
     "FROM T_工事台帳 LEFT JOIN T_営業所マスタ " & _
     "ON T_工事台帳.工番コード=T_営業所マスタ.工番コード " & _
     "WHERE (((T_工事台帳.営業所コード) Like '*'" & Forms!F_Main!営業所コード & "'*') " & _
     "And ((T_工事台帳.売上修正損益)='0' " & _
     "Or (T_工事台帳.売上修正損益) Is Null) " & _
     "And ((T_営業所マスタ.工番管理者) Like '*'" & Forms!F_Main!工番管理者 & "'*') " & _
     "And ((Format(T_工事台帳!処理工完日,'yyyy/mm/dd'))>=Forms!F_Main!A " & _
     "And (Format(T_工事台帳!処理工完日,'yyyy/mm/dd'))<=Forms!F_Main!B) " & _
     "And ((Format(T_工事台帳!受注日,'yyyy/mm/dd'))<=Forms!F_Main!B)) " & _
     "Or (((T_工事台帳.営業所コード) Like '*'" & Forms!F_Main!営業所コード & "'*') " & _
     "And ((T_工事台帳.売上修正損益)='0' Or (T_工事台帳.売上修正損益) Is Null) " & _
     "And ((T_営業所マスタ.工番管理者) Like '*'" & Forms!F_Main!工番管理者 & "'*') " & _
     "And ((Format(T_工事台帳!処理工完日,'yyyy/mm/dd'))="") " & _
     "And ((Format(T_工事台帳!受注日,'yyyy/mm/dd'))<=Forms!F_Main!B)) " & _
     "Or (((T_工事台帳.営業所コード) Like '*'" & Forms!F_Main!営業所コード & "'*') " & _
     "And ((T_工事台帳.売上修正損益)='0' " & _
     "Or (T_工事台帳.売上修正損益) Is Null) " & _
     "And ((T_営業所マスタ.工番管理者) Like '*'" & Forms!F_Main!工番管理者 & "'*') " & _
     "And ((Format(T_工事台帳!処理工完日,'yyyy/mm/dd'))>Forms!F_Main!B) " & _
     "And ((Format(T_工事台帳!受注日,'yyyy/mm/dd'))<=Forms!F_Main!B));"

DoCmd.RunSQL xSQL10

【6901】Re:SQL文で構文の誤り
回答  中西 健  - 05/12/5(月) 10:14 -

引用なし
パスワード
    " & Forms!F_Main!営業所コード & "とつけたのと同様に、Forms!F_Mainで参照しているところは全部、文字列リテラルの外に出さないといけないです。コードが全角になるのはたぶん問題がないです。

【6913】Re:SQL文で構文の誤り
質問  みつ  - 05/12/5(月) 18:14 -

引用なし
パスワード
   長すぎてはっきりしないので短くしました。
以下の場合に演算子がないとのエラーが出るのですが・・・

xSQL10 = "INSERT INTO WT_個別原価管理表 ( 工事番号 ) " & _
     "SELECT T_工事台帳.工事番号 " & _
     "FROM T_工事台帳 LEFT JOIN T_営業所マスタ " & _
     "ON T_工事台帳.工番コード=T_営業所マスタ.工番コード " & _
     "WHERE (((T_工事台帳.営業所コード) Like '*'" & Forms!F_Main!営業所コード & "'*') " & _
     "And ((T_工事台帳.売上修正損益)='0';"
DoCmd.RunSQL xSQL10

【6914】Re:SQL文で構文の誤り
回答  中西 健  - 05/12/5(月) 20:17 -

引用なし
パスワード
    私が間違っていました。
 アスタリスクの付近でシングルアポストロフィーが余分でした。
 下記参照ください。

xSQL10 = "INSERT INTO WT_個別原価管理表 ( 工事番号 ) " & _
     "SELECT T_工事台帳.工事番号 " & _
     "FROM T_工事台帳 LEFT JOIN T_営業所マスタ " & _
     "ON T_工事台帳.工番コード=T_営業所マスタ.工番コード " & _
     "WHERE (((T_工事台帳.営業所コード) Like '*" & Forms!F_Main!営業所コード & "*') " & _
     "And ((T_工事台帳.売上修正損益)='0';"

【6987】Re:SQL文で構文の誤り
質問  みつ  - 05/12/16(金) 14:53 -

引用なし
パスワード
   ACSESS2002のADOでした。
説明が足りませんでした。

Forms!F_Mainで参照しているところに関して
'%" & のついているところは参照NGでしたが、
'%" & のついていないところは参照OKでした。
'%" & のついているところの書き方をもう一度教えて頂けますか?


xSQL10 = "NSERT INTO WT_個別原価管理表 ( 工事番号, 受注金額, 工番コード, 見積番号, 顧客コード) " & _
     "SELECT T_工事台帳.工事番号, " & _
     "T_工事台帳.受注金額, " & _
     "T_工事台帳.工番コード, " & _
     "T_工事台帳.見積番号, " & _
     "T_工事台帳.顧客コード " & _
     "FROM T_工事台帳 LEFT JOIN T_営業所マスタ ON T_工事台帳.工番コード = T_営業所マスタ.工番コード " & _
     "WHERE (((T_工事台帳.営業所コード) Like '%" & [Forms]![F_Main]![営業所コード] & "%') " & _
     "AND ((T_工事台帳.売上修正損益)='0') " & _
     "AND ((T_営業所マスタ.工番管理者) Like '%" & [Forms]![F_Main]![工番管理者] & "%') " & _
     "AND ((Format([T_工事台帳]![処理工完日],'yyyy/mm/dd'))>=" & [Forms]![F_Main]![A] & " " & _
     "And (Format([T_工事台帳]![処理工完日],'yyyy/mm/dd'))<=" & [Forms]![F_Main]![B] & ") " & _
     "AND ((Format([T_工事台帳]![受注日],'yyyy/mm/dd'))<=" & [Forms]![F_Main]![B] & ")) " & _
     "OR (((T_工事台帳.営業所コード) Like '%" & [Forms]![F_Main]![営業所コード] & "%') " & _
     "AND ((T_工事台帳.売上修正損益)='0') " & _
     "AND ((T_営業所マスタ.工番管理者) Like '%" & [Forms]![F_Main]![工番管理者] & "%') " & _
     "AND ((Format([T_工事台帳]![処理工完日],'yyyy/mm/dd'))='') " & _
     "AND ((Format([T_工事台帳]![受注日],'yyyy/mm/dd'))<=" & [Forms]![F_Main]![B] & ")) " & _
     "OR (((T_工事台帳.営業所コード) Like '%" & [Forms]![F_Main]![営業所コード] & "%') " & _
     "AND ((T_工事台帳.売上修正損益)='0') " & _
     "AND ((T_営業所マスタ.工番管理者) Like '%" & [Forms]![F_Main]![工番管理者] & "%') " & _
     "AND ((Format([T_工事台帳]![処理工完日],'yyyy/mm/dd'))>" & [Forms]![F_Main]![B] & ") " & _
     "AND ((Format([T_工事台帳]![受注日],'yyyy/mm/dd'))<=" & [Forms]![F_Main]![B] & "));"

DoCmd.RunSQL xSQL10

【6993】Re:SQL文で構文の誤り
回答  中西 健  - 05/12/17(土) 23:27 -

引用なし
パスワード
    設定にもよりますが、%ではなくて*です。
 構文エラーは出なくなったんですね。

【6996】Re:SQL文で構文の誤り
質問  みつ  - 05/12/19(月) 9:01 -

引用なし
パスワード
   ▼中西 健 さん:
> 設定にもよりますが、%ではなくて*です。
> 構文エラーは出なくなったんですね。


エラーメッセージには”SQLステートメントが正しくありません・・・”と出ます。

%を*に変えましたが状況は同じです。

ADOの場合は%がワイルドカードになると聞いて、他のモジュールで*を%に変えたらレコードセットが取得できました。

SQLサーバーにリンクしているDBを対象としているのですが、オプションのSQLサーバー互換構文(ANSI92)には特にチェックは入れていません。これは関係ないのでしょうか。

【6997】Re:SQL文で構文の誤り
回答  小僧  - 05/12/19(月) 10:51 -

引用なし
パスワード
   ▼みつ さん、中西 健 さん:
おはようございます。

>エラーメッセージには”SQLステートメントが正しくありません・・・”と出ます。

>>xSQL10 = "NSERT INTO WT_個別原価管理表…

NSERT の I が欠落している為にそのメッセージが出ている、なんて事はありませんよね。

>ADOの場合は%がワイルドカードになると聞いて、
>他のモジュールで*を%に変えたらレコードセットが取得できました。

>>DoCmd.RunSQL xSQL10

どこにADOを使っているのでしょうか?


掲示板に書き込む手間を惜しんでいませんか?
ご自分の状況を少しでも知って頂きたいのでしたら最低でも
テーブル構造とデータ型くらいは提示すべきだと思いますよ。

クエリの中でFormat 関数を使っている箇所はテキスト型への変換がされますので
全て「'」で括る必要がでてきます。
また、営業所コード 売上修正損益 について、数値型である場合は「'」は不必要です。

【6998】Re:SQL文で構文の誤り
お礼  みつ  - 05/12/19(月) 12:47 -

引用なし
パスワード
   ご指摘通り、NSERT の I が欠落していました。
失礼しました。
%を*に変更しました。
無事動きました。
大変お世話になりました。

1474 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free