• 締切済み

MS-Access での集計、更新のしかたについて

MS-Accessの初心者ですが、プログラミング(cobol)の知識はあります。 Accessで担当別売上日計表を作ろうと考えています。 ・担当者マスタには、担当者コード、担当者名、本日、月間、期間の売上項目があります。 ・売上データには、担当者コード、売上額、その他の項目があります。 売上データの売上額で担当者マスタの当日、月間、期間の項目に加算するには、どの様な手順ですべきでしょうか?。 売上データを集計クエリで集計し、それを更新クエリで担当者マスタの各項目に加算すればいいのでしょうか?。 クエリの使い方の理解不足で戸惑っています。

みんなの回答

  • 12345963
  • ベストアンサー率55% (11/20)
回答No.5

すみません。アクセスは2GBまでです。 それでも、勉強されますか?

friskjp
質問者

お礼

今日見ましたので、遅くなりました。 >アクセスは2GBまでです。 知りませんでした。有難うございます。 どうすべきか悩みますね。 どうすればよいか・・・・・・。 例えば、OracleかMySQLにして、ODBC接続でACCESSは出来るのでしょうか?。 もしできれば、いいのですが。 12345963さんでしたらどの様にしますか?.

  • 12345963
  • ベストアンサー率55% (11/20)
回答No.4

私も初心者です。なので、皆さんの難しいお話は理解できません。 が、質問者さんが聞きたいのはこういうことかなと、ふっと思いました。 クエリのフィールドに 式1: Format([本日],"""日付 (""mm)") 集計の場所にグループ化 とすれば、月間が集計されます。 式2: Format([本日],"日付 (S)") 集計の場所にグループ化 だと、日付ごとの集計です。 間違っていたら、ごめんなさい。

friskjp
質問者

お礼

ご回答ありがとうございます。 ずーとCOBOLばかりやっていたので、頭の切り替えが出来なく悩んでいます。 私が勤めている会社の集計では、このような処理でやっています。 今回Accessで試みているのですが、どうもよくわかりません。 1日の業務の集計処理で、売上データを担当者コードでソートし担当者実績マスタに更新(当日分=売上データの集計、月間=月間+当日分)した後、担当者実績マスタから売上日計月計表を出力しています。 Access(とは限りませんが)では、データベースの売上表からSQLで出力しているのでしょうね。 素朴な疑問ですが、それだとサーバーのスペックに随分影響されるのではと思うのですが。  ちなみに、当社の1日の売上データは約40,000件です。単純計算で、 (40,000件 * 22日)* 12ヶ月 = 10,560,000件となります。 決算の月の売上日計表を出力するのに相当時間がかかるのではと思うのですが。

  • pouyo
  • ベストアンサー率28% (48/166)
回答No.3

NO1です どの考え方が正解ってことはないですが >売上データの担当者コードをキー(グループ)として並び替えて集計して、フォームやレポートで編集して画面やリストで都度みるのですね。  担当者コード(と日付情報など)でグループ化して集計したクエリをつくって フォームにして見るかフォーム上で集計することも可能です >しかし、それだと、マシンに付加がかかりそうな気がします。 集計にはそれほど負荷がかかりません テーブルを新しく作るほうが負荷がかかると思います (ちなみに テーブル数が多いより 一つのテーブルのフィールド数が多いほうが重くなる) テーブルを自動で作成するとなると DAOやADOを使用することになりますね 今までの質問内容からするとDAOの方がいいかな(楽)と思います DAOが利用できるようにするには モジュールを開いた状態で ツール→参照設定→マイクロソフトDAOの一番新しいやつ にチェックを入れると使用できるようになります ADOはデフォルトで利用できると思います テーブルを書き換えるだけなら データ更新クエリをつくっておいて マクロ(DoCmd)でクエリを実行させる方法もあります (実際は モジュールを実行させるためにフォームなどを利用しなくてはいけないと思うので それだったらクエリを直で実行すればいいということになりますが・・・) 私ならクエリ直実行かフォームで集計すると思います。

friskjp
質問者

お礼

早々の追加回答感謝します。 Accessは簡単なようですが機能が多くあり、理解するのに大変ですね。 昨日、書店に行って、「Accessクエリ・フォーム・レポートサンプル活用辞典」とAccess大辞典?(タイトル忘れました)を買ってきました。事例が多いのをえらびました。 ざっくりとページをめくっていきましたが、正規化でのテーブル・クエリを使う例は多いですが、今回のような例は載っていないですね。  COBOLだと、売上データからマスタを更新する例はよくあるのですが、やはりオブジェクト指向と手続き型の違いなんでしょうね。 思考を変えなくてはいけないのですね。

noname#140971
noname#140971
回答No.2

素人ですが・・・。 前月までのデータで修正や訂正があったらどのように対応するのか? 担当者コードの入力ミスがあったらどのように対応するのか? 担当者コードの入力訂正があったらどのように対応するのか? 集計クエリや更新クエリを利用するだけでは解決しないと思います。 ですから、DAOやADOを利用して更新するコードを書くのが手っ取り早いです。 例えば、[担当別売上日計表]という一時テーブルを作成するとします。 "DELETE FROM 担当別売上日計表;" と、[担当別売上日計表]を一気に削除して当期データを再集計します。 その後に、 "UPDATE 担当別売上日計表 SET newvalue WHERE criteria;" で、[担当別売上日計表]に集計結果を書き込みます。 ADO は複雑な COM や OLE DB を学習せずにデータにアクセスしたい、Visual Basic や VBScript などの高レベル言語の開発者にとって完璧な選択肢となります。 (ADO 2.5プログラマーズガイドより)

friskjp
質問者

お礼

ご回答ありがとうございます。 >前月までのデータで修正や訂正があったらどのように対応するのか? >担当者コードの入力ミスがあったらどのように対応するのか? >担当者コードの入力訂正があったらどのように対応するのか? この場合は、過去に遡ったりはしません。訂正データを入力して、記録に残るようにします。そうでないと不正の場合発見できません。 DAOやADOは、初めて聞く用語です。ネットで調べました。便利そうですね、Accessでの設定方法、使い方を勉強したいと思います。有難うございます。 Accessで設定しようと試みましたがよくわかりません。 これは、有料でしょうか?。 もう少ししらべてみます。 貴重な情報有難うございます。

  • pouyo
  • ベストアンサー率28% (48/166)
回答No.1

本来的には 担当者マスタの期間の本日、月間、期間上フィールドは不要で クエリをつくって表示させるのが 正しい(アクセスの設計的に)使い方になると思います 担当者マスタに本日(月間 期間)の売上げフィールドをつくっても 日にちは毎日変わるので別途日付データを記録するテーブルなどw作成しなくてはいけないので ますます冗長です それとも 毎日書き換えるということでしょうか? 実際には当日・月間・期間の担当者ごとの合計を表示させるクエリをつくって フォームを利用して 一覧できるようにするのが良いと思いますが。

friskjp
質問者

お礼

回答有難うございます。 COBOLでは、このような作り方をしていたので、同じように考えたのですが、担当者マスタには加算はしないで、売上データの担当者コードをキー(グループ)として並び替えて集計して、フォームやレポートで編集して画面やリストで都度みるのですね。 しかし、それだと、マシンに付加がかかりそうな気がします。 担当者マスタに集計した結果を用意しておいたほうが要求しての結果が早いのではと考えるのですが、この考え方は古いのでしょうか?.

関連するQ&A