- 締切済み
Accessでの抽出と集計について
Accsess初心者ですので、質問の仕方に不適切さがありましたら申し訳ございませんが、できましたらご回答よろしくお願いいたします。 Accessにて同じ案件名の案件を抽出し、それらの支払い金額や見積金額などを集計させたいのですが、どうやったら集計できるのかわかりません。 同じ案件名の案件というのは、たとえばAという調査名でいらいされた分の中の、1の場所の調査、2の場所の調査といった具合です。 一つの案件名に20件分くらいの調査があって、都度金額を記入していっているのですが、それを集計させたいのです。 いろいろ試してみましたが、うまくいきません。アドバイスのほどよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- shut0325
- ベストアンサー率40% (490/1207)
No.1です。 実際にはサブテーブル(もしくはサブテーブルの選択クエリ)でこのようなフォームを作り、サブフォームとします。 そしてメインテーブルベースのフォームを作り、その中にサブフォームオブジェクトを配置(ツールにある「サブフォーム/サブレコード」)して、そのソースオブジェクトをサブフォームにする というパターンが多いかと思います。 言葉だけでは説明しづらいですね。 で、今回合計金額を表示するのに使ったテキストボックスの中の情報(合計金額)はどこに格納されるかと言うと、、、どこにも格納されません。 ただ命令に従って表示しているだけです。 現状のままですと、金額入力時に合計金額がおかしくないかとかの確認用、、という意味合いになるかと思います。 ここから先は「集計して表示しました、、それからどうするの?」ということになります。大抵の場合、何かしら記録(エクセルに書き出すとか集計結果のテーブルを作るなど)をする、、と言うことになるかと思います。 そこで 選択クエリ、集計/クロス集計クエリ/テーブル作成クエリ等をうまく使っていく必要があります。 ということで、集計クエリの説明を、、と行きたいのですが、仕事が込合ってきたため数日時間をください。 簡単に一言だけ言うと集計クエリが意図した結果にならない場合、集計に不必要なフィールドが含まれていることが原因であることが多いです。 案件別の合計金額を求めたいときに、依頼主や完了日も含まれている、、といったケースです。
- shut0325
- ベストアンサー率40% (490/1207)
No.1です。 だいたいこういうイメージなのかな、、というのは分かりました。 テーブルの分け方、リレーションのやり方等はちょっとこれから勉強するとして(サンプルプログラム等すぐに出来るのですが、それらへのリンクはここでは禁止事項なので。)、最初の問題である集計だけでも解決しましょう。 >そうなるとどこにそれらを作ればいいのかわからない状況です。 これは大事なことです。集計するようなものはフォーム/サブフォーム内の非連結オブジェクト(テキストボックスなど)や集計クエリで行います。 テーブルでは出来ません。 今回はフォームでのやり方を説明します。 1.まず、一つテーブルを作ってください。 フィールドは [ID] 型はオートナンバー(あまり関係ないですが、キーにしてください) [数字] 型は数値 の二つだけ。フィールド名の[ ]は実際には不要。適当な名前で保存。 2.そのテーブルを開いて10個ほどレコードを作製してください。 ([数字]フィールドにどんどん適当な数字を入れるだけです) 3.フォーム→「ウィザードで、、」で全部のフィールドを選択して「次へ」「表形式」にして「次へ」、「標準」「次へ」「フォームのデザインを、、」「完了」 4.フォームフッターを適当に下に広げ、そこにテキストボックスを一つ書きます。 5.そのテキストボックスのプロパティーウインドー(テキストボックスの上で右クリックするとプロパティの表示/非表示が切り替え可能)の「データ」タブの「コントロールソース」のところに =SUM([数字]) と入力してください。[ ]は必要です。 書式タブで形式を「通貨」。 4.フォームビューに切り替えると先程入力した[数字]の合計がテキストボックスに表示されているかと思います。 試しにどのレコードでも良いので、数値を変更してみてください。 テキストボックスの値がすぐに変更されているのが分かるかと思います。 フォームの場合のミソはヘッダーやフッターに集計結果を表示することです。特に表形式の場合。表示形式をテーブルにするとこのテキストボックスは見られなくなります。(また戻せばいいだけですが。) うまく出来たら今取り掛かっているDBで抽出等複雑なことをせずに特定のフィールドの総合計を表示させるテストをしてみてください。
補足
ご回答ありがとうございます。 ご指示の様に試し、うまくいったので、今作っているDBでも総合計を出せる様にしました。
- shut0325
- ベストアンサー率40% (490/1207)
No.1です。 質問ばかりでもうしわけないですが、 1.解答の補足のようにテーブルは1つですか?(複数のテーブルがあり、リレーションシップしている、、という構造ではない?) 2.見積もり金額、入金金額は各支払者ごとに存在するのですか? 3.「この結果を今度は案件の方の、支払い金額や見積もり金額の方へ返したい」とは例えば案件1のトータルの見積金額や支払い金額を出すようにしたい、、ということでしょうか? 4.「解答の補足」のテーブル中 支払者1とありますが、これは毎回変わるものですか?(たとえば 案件1 では 支払者1には「業者A」 案件2 では 支払者1は「業者B」、、、といった感じでそこに入るデータが変わるという意味です。)
補足
回答ありがとうございます。 お伝えしきれなくて申し訳ありません。 1.テーブルはいくつかあります。 一つメインテーブルを作っておりまして、そこにおおもとの案件を登録していく形に今はしています。 その上で、サブのテーブルを作って、案件の中の一つづつを登録するといいう形にしています。この二つは案件名でつないでいるのですが、これであっているのかは自分でもわかりません。 メインのテーブルは 依頼主/作業項目/案件名/受注日/完了日/見積金額/請求金額/入金額/外注支払い/粗利 と作ってはいるものの、見積金額以下はサブのテーブルの金額を足したものを返したいので未記入なので必要ないのではないかと思っていますが、そうなるとどこにそれらを作ればいいのかわからない状況です。 ここに、3でふれられている結果を返して金額を変動?させていきたいのです。 これらはもともとエクセルで管理していたものを、視覚的にそのまま作って、張っていたリンクをどうしようか悩んでいるような状況です。 2。各支払者ごとには見積もり金額はありませんが、各支払者ごとに、支払い金額が発生しており、見積もり金額はその案件の見積もり金額ということになります。 3.1で少し返答をさせていただきましたが、おおむねそのような感じです。Aという調査名のトータルという形です。 4.基本的に支払者は固定なのですが、この先変わる可能性もあるので、支払者1とう風につくりました。また、イレギュラーに他の業者への支払いもあります。 以上つたなくて申し訳ありませんが補足です。
- shut0325
- ベストアンサー率40% (490/1207)
集計そのものは集計クエリやクロス集計クエリで可能ですが、これは試されましたか? 試した上でうまくいかない場合、テーブルやリレーションの設定がそうできないような構造になっている可能性もあります。 差しさわりのない程度にどのような構造にしているかを書かれるとより良い回答が得られるかと思います。
補足
案件名/個別案件名/支払い者1/支払者1への支払い金額/支払い者2/支払者2への支払い金額/見積もり金額/入金金額 大分端折りましたが、だいたいこんな感じでテーブルを作っています。 この支払者1への支払金額の合計、2への合計、見積もり金額、入金金額などを集計させたいのですが、案件名での抽出はできてもそこからの集計の仕方がわかりません。 集計クエリやクロス集計クエリをうまく使いこなすこともできず二週間くらいずっとなやんでいるのです。 また、この結果を今度は案件の方の、支払い金額や見積もり金額の方へ返したいのですが、もうどうやったらいいのかわからず立ち往生している状況です。VBAやSQLをいろいろ調べてもみたのですが、概念は理解できても、応用ができなくてこまっています。
補足
いつもご回答ありがとうございます。 ご返答が遅くなり申し訳ありません。 何冊かアクセスの本は読んで実践はしてみているのですが、応用が利かずに、かつエクセルで管理していた画面にこだわりすぎて悩んでいたのかもしれません。 もっといろいろ試してみます。お忙しいなかいつもご指導ありがとうございます。