
お世話になります。
仕訳抽出 (キー無し)の勘定科目別の金額を勘定科目毎に集計して仕訳集計(キー項目:勘定科目)の金額を更新するSQL文です。
1つ目はOK ですが 2つ目で「構文エラー:演算子がありません」となります。
DoCmd.RunSQL "UPDATE 仕訳集計 set 金額=0 "
DoCmd.RunSQL "UPDATE 仕訳集計 " _
& " INNER JOIN 仕訳抽出 ON 仕訳集計.勘定科目 = 仕訳抽出.勘定科目" _
& " SET 仕訳集計.金額 = SUM(仕訳抽出.金額) Group by 仕訳抽出.勘定科目;"
No.4ベストアンサー
- 回答日時:
> DSUMで置き換えても同じエラーが帰ってきます
同じエラーって?「構文エラー:演算子がありません」って事?
出来れば、打ち替えた
> DoCmd.RunSQL ~
を、出してみて^^;
> 中間ファイルを空にした後合計をインサートして、
> この中間ファイルで仕訳集計を更新すると解決しました。
で、よく判らないんだけど、中間ファイルって?インサートって?
> 出来上がったテーブルをEXCELファイルの所定のセルにインポート
> したいのです。
多分、MS-Excelのファイルにエクスポート書き出すんだと思うんだけど、テーブルじゃなくて、クエリでも書き出せるよ?
おそらくだけど、「仕訳集計」の「勘定科目」が「仕訳抽出」から書き出される「勘定科目」と数が一致しないとか、その前に「削除クエリ」で、「仕訳集計」のレコードを削除して、「仕訳抽出」から「勘定科目」をグループ化で「追加クエリ」を動作させて、「更新クエリ」で、「金額」を集計してと・・・すごい手間掛けてるような気がするんだけど?それとも「勘定科目」ってものは、変動しないものなのかな?
この回答への補足
DSUMについては削除してしまいましたので、勝手ですが今回はあきらめます。
中間ファイル云々については報告がExelの勘定科目毎の行位置が指定されているためデータあってもなくても全ての勘定科目をエキスポートするためにご推察の通りのことをやっています。
これもクエリー内での結合の種類の変更とグループ集計で可能なことを確認しました。
最後までお付き合い有難うございました。
No.3
- 回答日時:
#2です
すみません、もう1つ忘れてました><
クエリのデータを編集する
http://office.microsoft.com/ja-jp/access/HA10097 …
の「クエリのデータを編集できない状況」をお読みください
> ・クエリで GROUP BY 句を使用している場合。
と、言う事で「データを編集できないクエリ」で更新クエリは動作しません
だから、UpDate文のSQLに「GROUP BY 句」が文法上存在しません
これは、サブクエリで集計して更新を掛けるという手も使えません
別のクエリにすれば、動作可能です・・・確かね^^;
この回答への補足
回答有難うございます。
DSUMで置き換えても同じエラーが帰ってきます
「計算可能な物をテーブルに保持すると言う手は、あまりお勧めじゃありませんが」
仰るとおりですが、出来上がったテーブルをEXCELファイルの所定のセルにインポートしたいのです。
中間ファイルを空にした後合計をインサートして、この中間ファイルで仕訳集計を更新すると解決しました。
しかしすっきりしません。締め切りを保留にしておきますので他にお気づきでしたら宜しくお願いします。
No.2
- 回答日時:
そもそも論で・・・
UPDATE ステートメント
http://office.microsoft.com/ja-jp/access/HA01231 …
で、あるようにUpDateのSQLで、「Group by」が使えた記憶が無いのです
手としては、
> UPDATE 仕訳集計
> INNER JOIN 仕訳抽出 ON 仕訳集計.勘定科目 = 仕訳抽出.勘定科目
> SET 仕訳集計.金額 = SUM(仕訳抽出.金額) Group by 仕訳抽出.勘定科目;
の部分を集合関数DSumで置き換えて
> UPDATE 仕訳集計
> SET 金額 = DSum("金額","仕訳抽出","[勘定科目]=" & [勘定科目]);
当りに変更するのが手としては、べたなのだと思いますが、計算可能な物をテーブルに保持すると言う手は、あまりお勧めじゃありませんが^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBでSQL文のUPDATE構文を使った時のエラーについて
Visual Basic(VBA)
-
Access 2013 でADOがうまく使えません
その他(Microsoft Office)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
-
4
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
5
ACCESSでテーブルの一部だけを更新したい
Access(アクセス)
-
6
accessの SQL文 INSERT命令
Access(アクセス)
-
7
レコード登録時に「演算子がありません」構文エラーが発生
その他(プログラミング・Web制作)
-
8
Access2010 「演算子がありません」エラー
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報