こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

a  b
10 10
20 30
15 45
30 75

投稿日時 - 2013-05-28 09:31:49

QNo.8108416

困ってます

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

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

投稿日時 - 2013-05-30 22:09:15

お礼

ありがとうございます。
Access2010に下記データを「テーブル1」に格納して
X a     b
1100
2100
3150
450

X,a,bは数値型です。

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

投稿日時 - 2013-05-31 09:54:52

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

piroin654 さん ナイスフォローです。
ありがとうございます。

そして質問者さん、ごめんなさい。

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

投稿日時 - 2013-05-31 22:58:21

ANo.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から更新を直接できればいろいろと便利かもしれません。

投稿日時 - 2013-05-31 12:22:02

あなたにオススメの質問