Microsoft Access ClubAccess超初心者対象ForumAccess初級者対象ForumAccess初・中級者対象ForumAccess VBA Tips ForumDAO、ADO、SQL Forum

     

No67997.連結データシートでのレコード間の計算について

タイトル連結データシートでのレコード間の計算について
記事No: 67997
投稿日: 2006/01/03(Tue) 15:17
投稿者: ささ
OS:XP
Access Version:2003

実現できるかどうか分からないのですが、
連結データシートでのレコード間の計算
について教えて下さい。
例えば、テーブルの内容が
ID 金額
1  100
2  200
3  300
であったとした場合、
連結データシートで表示させたいのは、
ID 金額 累計金額
1  100  100
2  200  300
3  300  600
と言った通りです。
累計金額欄は前レコードの金額の累計を
計算し表示させたいのですが可能でしょ
うか?

よろしくお願いします。

タイトルRe: 連結データシートでのレコード間の計算について
記事No: 67998
投稿日: 2006/01/03(Tue) 16:44
投稿者: 三田舞也
> 累計金額欄は前レコードの金額の累計を
> 計算し表示させたいのですが可能でしょ
> うか?

色々な方法があると思いますが。

テーブル名を TABLE1 とします。
以下のSQL文を使い、SQLビューでクエリを作成して、連結データシートのレコードソースとします。

SELECT T1.ID, T1.金額, DSum("金額","TABLE1","ID <=" & T1.ID) AS 累積金額
FROM TABLE1 AS T1;

タイトルRe^2: 連結データシートでのレコード間の計算について
記事No: 68080
投稿日: 2006/01/05(Thu) 12:57
投稿者: ささ
三田舞也様

ご回答ありがとうございました。
試したところ成功致しました。

当方の当初の質問が不足していたのですが、
最終的に実現させたいことは抽出条件を設定
しその条件に一致するレコードの累計金額を
連結データシートで表示させたいというもの
です。
例えば、テーブルの内容が
ID 金額
1  100
2  200
3  300
クエリの抽出条件が「ID=2or3」であった場合、
(実際にはID以外にも他の項目で抽出条件を設定したい)
連結データシートで表示させたいのは、
ID 金額 累計金額
2  200  200
3  300  500
と言った通りです。

三田舞也様ご回答のクエリで試したところ、
ID 金額 累計金額
2  200  300
3  300  600
と表示されてしまい、抽出対象外の「ID=1」の
レコードの金額100も累計されてしまいます。

図々しいですが色々な方法があるとのことで
勉強のためにも他の方法もお教え頂けないで
しょうか?

以上、お願い致します。

タイトルRe^3: 連結データシートでのレコード間の計算について
記事No: 68085
投稿日: 2006/01/05(Thu) 13:45
投稿者: 三田舞也
> 三田舞也様ご回答のクエリで試したところ、
> ID 金額 累計金額
> 2  200  300
> 3  300  600
> と表示されてしまい、抽出対象外の「ID=1」の
> レコードの金額100も累計されてしまいます。

先に明記した
SELECT T1.ID, T1.金額, DSum("金額","TABLE1","ID <=" & T1.ID) AS 累積金額
FROM TABLE1 AS T1;

[TABLE1]のところを、抽出結果のクエリとすれば済む話だと思います。


もしくは、Dsumの条件に追加すればよいかと。
例)
SELECT T1.ID, T1.金額, DSum("金額","TABLE1","ID IN (2,3) AND ID <=" & T1.ID) AS 累積金額
FROM TABLE1 AS T1
WHERE ID IN (2,3);

タイトルRe^4: 連結データシートでのレコード間の計算について
記事No: 68176
投稿日: 2006/01/06(Fri) 19:28
投稿者: ささ
三田舞也様

ご回答ありがとうございます。

> 先に明記した
> SELECT T1.ID, T1.金額, DSum("金額","TABLE1","ID <=" & T1.ID) AS 累積金額
> FROM TABLE1 AS T1;
> の
> [TABLE1]のところを、抽出結果のクエリとすれば済む話だと思います。

上記方法で試したところ、抽出条件が固定の場合は成功致しました。
またまた質問不足で申し訳ないのですが、実現させたいのは抽出条件を
パラメータで引き渡したいのです。
抽出条件をパラメータで引き渡した場合、累積金額は「#エラー」と表示
されてしまいます。
DSumのヘルプを参照したところ、第2引数の「domain」は「パラメータを
必要としないクエリには、テーブル名またはクエリ名が指定できます。」
と記述されていました。

抽出条件をパラメータで引渡すことは無理なのでしょうか?
また、データシートの方に累積金額用のテキストを作り、コントロール
ソースの設定で累積を表示することなどできないのでしょうか?

以上、ど素人の質問で申し訳ございません。

タイトルRe^5: 連結データシートでのレコード間の計算について
記事No: 68191
投稿日: 2006/01/07(Sat) 01:17
投稿者: 三田舞也
> 抽出条件をパラメータで引渡すことは無理なのでしょうか?
> また、データシートの方に累積金額用のテキストを作り、コントロール
> ソースの設定で累積を表示することなどできないのでしょうか?


パラメータで入力するのではなく、
たとえばフォームのテキストボックスの値を使用して抽出を行えば可能です。

タイトルRe^6: 連結データシートでのレコード間の計算について
記事No: 68325
投稿日: 2006/01/10(Tue) 13:39
投稿者: ささ
三田舞也様

> パラメータで入力するのではなく、
> たとえばフォームのテキストボックスの値を使用して抽出を行えば可能です。

上記方法で成功しました。
ありがとうございました。


このAccessフォーラム過去ログ集は、Microsoft Access Club が運営しています


 

ページの先頭へ 前ページへ戻る