• ベストアンサー

ExcelマクロでAccessデータを累計処理

Excel2010のVBAでAccess2010のデータをDAOで操作しています。 そこで、下記のような加算処理(bフィールドでaフィールドの累計)ができるのでしょうか。また、更新クエリで このようなことができるものなのでしょうか??Access初心者です。 a  b 10 10 20 30 15 45 30 75

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

a  b 10 10 20 30 15 45 30 75 このように順番に加算してゆくためには、別途並び順に利用できるフィールドが必要です。 X a 1 10 2 20 3 15 4 30 ↑このようなものなら、bフィールドはクエリで b:dsum([a],"[X] <= " & [X]) とすれば求められます。 更新クエリでテーブルのbフィールドを変更するには フィールド:b テーブル:テーブル名 レコードの更新:dsum([a],"[X] <= " & [X]) です。 https://www.moug.net/tech/acvba/0080017.html

crown8803
質問者

お礼

ありがとうございます。 Access2010に下記データを「テーブル1」に格納して X  a      b 1 100 2 100 3 150 4 50 X,a,bは数値型です。 Access2010の更新クエリで フィールド:b テーブル:テーブル1 レコードの更新:DSum([a],"[X] <=" & [X]) を実行すると、 「更新クエリで全てのレコードを更新できません。」 「4個のフィールドで型変換エラー、0件のレコード....」 のメッセージが表示され「はい」をクリックしてもデータが更新されません。うっー、分からない???

その他の回答 (2)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

piroin654 さん ナイスフォローです。 ありがとうございます。 そして質問者さん、ごめんなさい。 どうかしてますね、私。 言い訳になりますが、風邪をひいているようで、 今日一日、頭痛と筋肉痛で廃人状態でした。 今、少し楽になったので書き込みました。 皆様もご自愛くださいませ。 明日もおかしいかもしれないので、piroin654 さん あとはお願いします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

nicotinismさん、テーブルの指定が抜けていますよ。 以下のように書き変えてみてください。 DSum("a","テーブル1","X<=" & [テーブル1].[X]) 「 こちらでもいいのかな DSum("a","テーブル1","X<=" & [X]) 」 なお、EXCELから直接SQL文を発行して実行するには、たとえば Sub test() Dim db As DAO.Database Dim strSQL As String strSQL = "UPDATE テーブル1 SET テーブル1.b = DSum(""a"",""テーブル1"",""[X]<="" & [テーブル1].[X]);" Set db = OpenDatabase("C:\Temp\sample.mdb") db.Execute Query:=strSQL db.Close: Set db = Nothing End Sub のようにします。VBAの中ではDSumの引数を二重に「"」で囲んでいることに注意を してください。クエリのSQL文を取り出すと、 UPDATE テーブル1 SET テーブル1.b = DSum("a","テーブル1","[X]<=" & [テーブル1].[X]); のようになっていると思いますが。 EXCELから更新を直接できればいろいろと便利かもしれません。

関連するQ&A