• ベストアンサー

ACCESSでSQL文

宜しくお願いします。 ACCESS2000で 仕訳帳テーブルの特定期間の科目ID別集計を中間テーブルに生成する処理の以下の文でエラーメッセージが出ます。 DoCmd.RunSQL ("Insert Into 中間(月度,科目ID,借方計,貸方計) " _ & "Select 開始日,科目ID,sum(借方),Sum(貸方) From 仕訳帳" _ & "Group By 科目ID where (仕訳日 >= 開始日) and (仕訳日 <= 終了日)") エラーメッセージの内容は 「クエリー式’科目ID where (仕訳日 >= 開始日) and (仕訳日 <= 終了日)'の構文エラー:演算子がありません」

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

SQLに自信が無いのならクエリデザインで作成することをお勧めします。 また、クエリでエラーがでたのならまず変数に代入し表示すればミスも確認できます。 strSQL = "SQL文" debug.print strSQL DoCmd.RunSQL strSQL (1)Where句はGroup Byの内側に記述 (もし集約後の抽出であればHaving句) (2)集約に開始日がない (3)貸方計) 、仕訳帳の後ろに空白がない (4)仕訳日は仕訳帳テーブルの項目? 変数であれば文字列の外だしにする必要があります。 " ~ ('" & 仕訳日 & "' >=開始日 ~ "

shinkami
質問者

お礼

御回答有難うございます (1)(mo_gu様の指導の通り)と(3)の処理でで解決しました。 (4)についてはフィールド名がユニークのためテーブル名を省略しています。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mo_gu
  • ベストアンサー率51% (56/109)
回答No.1

DoCmd.RunSQL ("Insert Into 中間(月度,科目ID,借方計,貸方計) " _ & " Select 開始日,科目ID,sum(借方),Sum(貸方) From 仕訳帳 " _ & " where (仕訳日 >= 開始日) and (仕訳日 <= 終了日) Group By 科目ID") "の後にスペースを入れたらどうでしょうか? Group Byをwhere の後に

shinkami
質問者

お礼

ご回答有難うございます ご提示の通りWher句とGroup By句を入れ替えて解決しました

すると、全ての回答が全文表示されます。

専門家に質問してみよう