• 締切済み

ACCESS2000 テキストフィールドの一括化

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 こんな感じです。 よろしくお願いいたします。

みんなの回答

  • Nii
  • ベストアンサー率48% (79/162)
回答No.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 となり、レコードの最後を取得した場合は、最後のレコードの備考が返されます。

kouchin
質問者

お礼

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

  • Nii
  • ベストアンサー率48% (79/162)
回答No.2

>前のデータが保持されず、単に最後のレコードの備考が返されました・・・ 変数の宣言を何処でされました? 前の結果が反映されていないという事は、呼び出し毎に初期化されているという事ですよね。 Functionの中で、変数の宣言をされていませんか? Dim 前の備考 As String Dim 前の科目コード As Long を先に記入し、 Public Function・・・・ ・ End Function としてます。 これは、グローバル変数にする為です。 Private, Public あたりをキーワードにし、ヘルプを参照してみて下さい。 後は、フォーム・レポート等にモジュールを書いていませんか? その場合でしたら、モジュールの新規作成で、お願いします。

kouchin
質問者

補足

むむぅ。 >変数の宣言を何処でされました? Public Function の前でしているんですが・・・。 >フォーム・レポート等にモジュールを書いていませんか? 新規モジュールで作っているのですが・・・。 でも、Niiさんは、これでうまくできているんですよね・・・。 私がやるとどうもうまくいきませんが、お忙しい中、ご回答いただきありがとうございました。

  • Nii
  • ベストアンサー率48% (79/162)
回答No.1

前の値を保持する為に、モジュールを書かなければ、実現できないと思います。 Dim 前の備考 As String Dim 前の科目コード As Long Public Function 備考は(備考 As String, 科目コード As Long) As String If 科目コード = 前の科目コード Then 前の備考 = 前の備考 & 備考 Else 前の備考 = 備考 End If 前の科目コード = 科目コード 備考は = 前の備考 End Function 集計クエリにて、科目コードがグループ化、金額が合計、備考は、最後にすれば、どうでしょうか? 備考の列記:備考は(備考, 科目コード) ※クエリ実行前に、前の備考・前の科目コードをクリアしとかなければ、結果が変わってくる場合があります。

kouchin
質問者

補足

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

関連するQ&A