プロが教える店舗&オフィスのセキュリティ対策術

ACCESS2000で経理関係のDBを作成中です。入力テーブルの構造はおおよそ下記のとおりです。

フィールド1:科目コード(数値型)
フィールド2:金額(数値型)
フィールド3:備考(テキスト型)

今、科目コードごとに集計するためのクエリー及びレポートを作ろうと思っていて、金額の合計はできるのですが、備考欄も科目コード単位でまとめたいと思っています。どうすればよいのでしょうか。
(テーブル)
      科目コード 金額 備考
レコード1:11    100 AAAAA
レコード2:11    200 BBBBB
レコード3:12     50 CCCCC
レコード4:12    500 DDDDD
           ↓
集計(クエリ、レポート)
      科目コード 金額の合計 備考の列記
      11    300     AAAAABBBBB
      12    550     CCCCCDDDDD

こんな感じです。

よろしくお願いいたします。

A 回答 (3件)

>Niiさんは、これでうまくできているんですよね


はい・・・

モジュールに問題が無いとすれば、クエリで、科目コードは順番にならんでいますか?
科目が連続してない場合は、その都度新規に値を設定しているので、昇順に並べ替えて下さい。

グループ化せずに、一覧にした場合の結果でみると、
      科目コード 金額 備考の列記
レコード1:11    100 AAAAA
レコード2:11    200 AAAAABBBBB
レコード3:12     50 CCCCC
レコード4:12    500 CCCCCDDDDD
となると思うのですが、科目コードが順番に並んでいない時は、
      科目コード 金額 備考の列記
レコード1:11    100 AAAAA
レコード3:12     50 CCCCC
レコード2:11    200 BBBBB
レコード4:12    500 DDDDD
となり、レコードの最後を取得した場合は、最後のレコードの備考が返されます。
    • good
    • 0
この回答へのお礼

モジュールでやらせている(たい)ことの意味はわかるのですが・・・。
いろいろやってみましたが、せっかく教えていただいたのに、私の知識のなさと理解力の乏しさのために、できませんでした。とりあえずまた日を改めて挑戦してみます・・・(涙)。ありがとうございました。

お礼日時:2002/11/05 12:29

>前のデータが保持されず、単に最後のレコードの備考が返されました・・・


変数の宣言を何処でされました?
前の結果が反映されていないという事は、呼び出し毎に初期化されているという事ですよね。
Functionの中で、変数の宣言をされていませんか?
Dim 前の備考 As String
Dim 前の科目コード As Long
を先に記入し、
Public Function・・・・

End Function
としてます。
これは、グローバル変数にする為です。
Private, Public あたりをキーワードにし、ヘルプを参照してみて下さい。

後は、フォーム・レポート等にモジュールを書いていませんか?
その場合でしたら、モジュールの新規作成で、お願いします。

この回答への補足

むむぅ。
>変数の宣言を何処でされました?
Public Function の前でしているんですが・・・。

>フォーム・レポート等にモジュールを書いていませんか?
新規モジュールで作っているのですが・・・。

でも、Niiさんは、これでうまくできているんですよね・・・。

私がやるとどうもうまくいきませんが、お忙しい中、ご回答いただきありがとうございました。

補足日時:2002/11/05 10:40
    • good
    • 0

前の値を保持する為に、モジュールを書かなければ、実現できないと思います。



Dim 前の備考 As String
Dim 前の科目コード As Long

Public Function 備考は(備考 As String, 科目コード As Long) As String
If 科目コード = 前の科目コード Then
前の備考 = 前の備考 & 備考
Else
前の備考 = 備考
End If
前の科目コード = 科目コード
備考は = 前の備考
End Function

集計クエリにて、科目コードがグループ化、金額が合計、備考は、最後にすれば、どうでしょうか?

備考の列記:備考は(備考, 科目コード)

※クエリ実行前に、前の備考・前の科目コードをクリアしとかなければ、結果が変わってくる場合があります。

この回答への補足

う~ん、うまくいきません。
前のデータが保持されず、単に最後のレコードの備考が返されました・・・。

補足日時:2002/11/01 15:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!