• ベストアンサー

ACCESS VBAで回数を数える

あるシステムをACCESSで作成しているのですが、 ポイントカードテーブルというのがあり、それには ポイントカード(CD) ポイントカード(美容院) などとはいっていて、 それぞれに最大ポイントというのがあり、それにたっしたらある処理を行うというのを作成したいです。 出費テーブルでは、美容院などの出費を登録していくのですが、この際、出費テーブルで美容室に何回いったかというのを数えたいのですがどのようにすればいいでしょうか? 文章がわかりにくくてすみません。 よろしくお願いします。

noname#10904
noname#10904

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんにちは。 うーん、イマイチよくわかりませんが・・・、 >>プログラム内で処理したいのですが? SQLを直接書いて処理をするという事でしょうか? >>出費テーブルにある美容院の数を数えたいのですよね。 単純に考えれば、 SELECT COUNT(*) FROM 出費テーブル GROUP BY 出費種類 で、種類ごとの件数は取れますが・・・。 さらにポイント数を掛けて取得するという事ですか? もう少し何かお願いします・・・。 (^^ゞ

その他の回答 (2)

  • yu06
  • ベストアンサー率30% (4/13)
回答No.2

出費テーブルの美容室回数をクロス集計(クエリー)を行って→さらにこのクエリーを基に ・表示したいサブフォームまたは ・印刷したいサブレポート にしたらいかがですか?

noname#10904
質問者

補足

お返事ありがとうございます。 これは、VBAを使わない場合ですよね? プログラム内で処理したいのですが? 本当に無知でごめんなさい。 またお願いします。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

ポイントカードテーブルと、出費テーブルの関連がわかりませんけど (^^ゞ どのようにデータが入っていて、どのようにカウント?するのかを 例をあげて説明してもらったほうがわかりやすいです。 DCount 関数 Or DSum 関数 あたりが使えるとは思いますけど。

noname#10904
質問者

補足

お返事ありがとうございます。 出費テーブルには出費種類といのがあって、 さらに種類テーブルといのがあり、これには種類の名前(美容院、服、CD、本など)、種類ID番号があります。 その種類テーブルに関連したポイントテーブルがあります。種類の名前、そして最大ポイント、さらに何円で1ポイントというのもあります。 つまり、リレーションは出費テーブルの出費種類と種類テーブルの種類IDが関連していて、そして種類テーブルの種類名とポイントテーブルの種類名が関連しています。 出費テーブルには、出費種類がいろいろ入ってきて、そのテーブルに、美容院が何個も入ってきますよね。 このときにこの出費テーブルにある美容院の数を数えたいのですよね。ちなみに数えるのは美容院限定でなくてプログラム側で今何ポイントかしらべるコマンドをつくり、何が何ポイントなのかをしらべたいです。 無知ですみません。 またお願いします。

関連するQ&A

  • Access2003 VBAのDELETEについて

    AccessでOracleとODBC接続してデータを操作するアプリを作成しています。 処理をする際に毎回ワークテーブルを全件削除し、取り込んで本テーブルにインサートする という処理にて、ワークテーブルのデリート文でなぜか10件しかレコードが削除されません。 固有レコードの問題を解消するためにDB側ではID列をPKとして一意に決まるように振っています。 ODBCのリンクテーブルという形で登録しています。 テーブル:TEST_WORK カラム:ID(PK)、コード、名称 CurrentDb.Execute "DELETE FROM TEST_WORK" 上記記述にてなぜか全削除されません。 感じとしては一回目のdeleteでIDが1~9までが削除され、次にdeleteした際は10~99までが削除され・・・というように桁数で変化している気がします。 全て消すにはどのようにすればよいでしょうか?

  • Access VBA から Outlook 呼び出しでオートメーション

    Access VBA から Outlook 呼び出しでオートメーションエラーが発生することがあります。 環境は Access 2003、Outlook 2003 で Access VBA で CreateObject 等を使い Outlook.Application オブジェクトの作成、もしくは GetObject を使って既存のインスタンスを取ろうとすると「オートメーションエラー システムコールに失敗」というエラーが出るときと、出ないときがあります。 具体的には前処理でテーブル作成クエリの実行を挟むとエラーが発生し、挟まないとエラーが発生しません。 オブジェクトの作成の仕方が悪いのかと思い、いろいろと試しましたが結果は同じでした。 テーブル作成クエリはリンクテーブルで覗いているテーブルをローカルのテーブルとして丸コピーしてくることを目的としており、結構サイズが大きく、作成にも少し時間がかかるものです。 どうも決定的な手がかりが見つからず困っております。何かアドバイスございましたらお聞かせください。よろしくお願いいたします。

  • Access VBA 読み取り専用かチェック

    お世話になります。 現在Accessにてツールを作成しておりますが、読み取り専用で 開かれた場合は、処理をさせないようにしたいとところです。 処理が実行されると削除クエリの箇所で、削除できない旨のエラーが 出てしまい処理が中断します。 なお、中断される前にローカルにテンポラリテーブルを作成したり している為、中途半端な状態で止まってしまいます。 ※ツールはRuntime環境で利用する為、ユーザーが中途半端に  作成されたテーブル等を削除できません。 なので、フォームを開く際に読み取り専用で開かれたかどうか チェックし、読み取り専用の場合は、処理させないようにボタンを 使用不可にしたいと考えております。 ご教示の程、宜しくお願い致します。

  • Access VBA 処理 落ち 不具合

    AccessVBAの処理落ちで困っています。 開発環境は Office 2003 Access OSはWindowsServer2003 Standard Edition(VM Ware上で稼働)、データベースは別に用意したAccess2003MDBファイルです。 処理概要は データベース上の業務データが登録されているテーブル(以後テーブル1と呼ぶ)のデータ(主キー)を元にデータベース上の商品単価が登録されているマスタテーブル(以後マスタ1と呼ぶ)のデータを抽出し、テーブル1に金額をセットするものです。 業務データは月毎に約4000件存在します。 金額のセット処理はレコードセットを用い、テーブル1の該当する月のデータ件数分繰り返し行います。 テーブル1の金額フィールドにテーブル1のデータを主キーとして用い、マスタ1の該当する金額を抽出し、セットしなければならないのですが、金額が正しく登録されている物と全く違う金額が登録されている状態が発生しています。 テストデータは 例:2009年4月分のデータのみ(テーブル1、マスタ1共に) という状態でテストしています。 作成したソースコードをチェックしてみましたがロジック上は 何処にも異常は見当たりません。 ループの中でソースコードの命令外の処理が行われているようにしか思えません。 説明が分かり辛ければ申し訳ありません、ご指摘頂ければ補足します。 どなたかこの現象についてご存じの方はご教授願えませんでしょうか? どうか宜しくお願い致します。

  • ACCESS VBA

    ACCESS2000を使用しています。 行いたい処理があるのですが方法がわかりません。 方法を知ってる方がいればアドバイスの程よろしくお願い致します。(VBAでも全然OKです) リストボックスのリレーション 例えば左側のリストボックスで4種類の選択肢のいずれかを選び、それに応じたテーブル内容を右側のリストボックスに表示する方法 (右側に表示させたいテーブル4種類は既に作成しています) ↓行いたい処理  季節の商品一覧から「夏の商品一覧」を選んだ場合 左リストボックス  右リストボックス ------------ -------- |春の商品一覧 | |Tシャツ| |夏の商品一覧 | |短パン | |秋の商品一覧 | |~~~ | |冬の商品一覧 | |~~~ | ------------

  • クッキーによるアクセス回数制限

    以前にもこちらで質問させていただき、Cookieを利用すれば可能では?というお答えをいただいたのですが、アクセス10回までは非認証で訪れる事が出来るが、11回目訪れると、パスワード入力画面とともに、ユーザー登録を促すようなシステムを、どのようなソースで書けばいいか、ご教授いただけないでしょうか?? よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • Access VBA ・Formについて

    Access VBA及び、フォームのデザインについてお尋ねいたします。 Access VBAを活用したフォーム画面の作成を予定しています。 フォーム画面は、Excelのような表形式とし、1マスごとに表示させる内容を指定したり、処理で使用する行だけを表示してフォームの高さを変更したりしたいです。 フォームで表示した内容や入力した内容は配列型変数で取り扱い、テーブルとは非連結のフォームにしたいです。 どなたかどのようなフォーム画面を作成すればいいかお分かりの方いますでしょうか? 11列×50行の表を作成したいです。

  • accessのデータ変更

    質問お願い致します。 当方はaccessの素人なのですが、今朝上司から「accessで作成したのシステムを変更して欲しい(ボタンの位置や、文章等)」といわれ困っております。 その変更して欲しいと言われたaccessのシステムなのですが、CDからインストールして利用する顧客管理システムでした。 しかし上司から貰ったデータはそのCD1枚だけでしたので、「元データは?」と思ったのですが、accessはCDからインストールした「mdbファイル」をそのままaccessで開いて、修正・変更する事は可能なのでしょうか? ちなみにシステムは2003年に作製された物で、自分の持っているaccessは2010年の物です。 解りにくい文章化とは思いますが、お知恵を貸して下さい。 宜しくお願い致します。

  • Access アクセス VBA レコード追加

    Access フォームからのレコードの追加方法を教えてください。 テーブル1 ・ID(主キー) ・窓口 ・コストセンター ---------- テーブル2 ・コストセンター(主キー) ・目的 ---------- リレーションシップ テーブル1のコストセンターとテーブル2のコストセンターを一対多 ---------- メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 また、フォームに”コストセンター”を入力したときに入力したレコードがテーブル2にあっても自動で”目的”が表示されません。 メインフォームにはサブフォームで各テーブルが表示されています。 フォーム ・ID(初期値•••メインで入力したID) ・窓口 ・コストセンター ・目的 ・コストセンター(非表示) 上から順に ・テーブル1 ・テーブル1 ・テーブル2 ・テーブル2 ・テーブル1

  • Access2000でピボットテーブル

    Access2000でピボットテーブルフォームというのがあります。 Accessのテーブルからピボットテーブルがつくれるのですが、この場合に Accessのテーブルのデータ数が65536行を超えるデータ(エクセルの最大の行数) でもピボットテーブルは作成できるのでしょうか? ご存知の方教えてください