• ベストアンサー

至急Accessでフォームで検索できるようにしたい

Accessのフォームで店舗IDと日付(例:201501-201502まで)を入力して検索ボタンを押したら、A店B店C店の過去1年分の売上履歴を蓄積したテーブルから(仮:テーブル名:全店舗売上履歴)その月の売上履歴がサブフォームにエクセルのような形式(表形式)でレコードが出てきて 別の枠に集計金額を表示させるような「売上履歴検索ツール」を作りたいのですが、どうしてもうまく行きません。 サブフォームを作りましたが どうしてもエクセルのような表形式でみれるように作れません。 また、店舗IDと日付で検索させるには VBAみたいな命令文が必要でしょうか? 作り方をアドバイスいただけると助かります。 (1)サブフォームに履歴をレコードごとに表示させたい (2)店舗ID、日付で検索させたい (3)検索範囲での集計金額を表示させたい (4)月の売上履歴をテーブルに蓄積させたい この4つのやり方を探しています。 【フォーム】 店舗ID→検索入力 日付→年月の検索入力 サブフォームに 日付(年月) 店舗ID 店舗名 販売商品名 数量 金額 をレコードごとに表示 その他(枠:フレーム) 集計した金額を表示 手順的な形で教えていただけると分かり良いです。 よろしくお願いいたします。

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (254/607)
回答No.3

色々課題がありますね 一つづつ解決していきましょう ------------------------------ >作り方をアドバイスいただけると助かります。 サブフォームがあるフォームの作り方は2つあります 1.フォームウィザードを活用する 2.メインフォームとサブフォーム別々に作成し、  サブフォーム/サブレポートツールでメインフォームとサブフォームを繋ぐ (1)の方法 【フォームウィザード起動】 ⇒【メインフォームのレコードソースとなるテーブル】⇒【必要なフィールド選択】 ⇒【サブフォームのレコードソースとなるテーブル】⇒【必要なフィールド選択】 ⇒【次へ】⇒【サブフォームがあるフォーム】⇒【次へ】⇒【表形式】⇒【次へ】 ⇒【フォーム:売上履歴メイン】⇒【サブフォーム:売上履歴サブ】 ⇒【各フォームをデザインモードで開きボックスのサイズと配置を整える】 ⇒【会社コードのテキストボックスを右クリック】 ⇒【コントロールの種類の変更】⇒ 【コンポボックス】⇒ これで新たな企業の検索ボックス配必要ありません (2)の方法 【メインフォームを表形式で作成】⇒【サブフォームを表形式で作表】 ⇒【メインフォームをデダインモードで開く】 ⇒【サブフォーム/サブレポートツールをフォームフッターに配置】 ⇒【単票フォームにしますと警告されます OK】⇒【売上履歴サブ】 ⇒【次へ】⇒【フォームフッターの下部空白部分】 ⇒【プロパティーはメインフォームのものになります】 ⇒【既定のビューの単票を帳表に変更】⇒ 以上でメインフォームもサブフォームもExcelのような表形式になります。 メインフォームの一つのレコードをクリックするとそのレコードのみの 売上履歴がサブフォームに表示されます。 メインフォームも行方向にスクロールできますので、企業名のフリガナ順に 表示すると見つけやしですね、 フォームが出来上がれば連絡ください。 次は期間内の売上履歴と集計です。

putiabu
質問者

お礼

ありがとうございます。 皆さんのも参考にさせていただきました。 今回はすでに作成できましたのでこれで終わらせていただきます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

貴社は何店ありますか。「量は質に転化する」という言葉を聞いたことがありますか。 データ量や条件数が限度を超えると、別の方法を考えないといけない。その量がシステムを考えるときに一番重要になります。質問には必ず入れるべきですが認識が低い。10店程度で考えてよいですか。データ量は。 ーー >月の売上履歴をテーブルに蓄積させたい 売り上げのデータは店別かつ日別(合計)で作成済みではないのですか。 もっと販売品別とかの明細が対象になっていますか。現状存在するテーブルレコードの細かさのレベルを明記してください。 ここでは質問はデータを作成する局面は問題外ではないのですか。中間的な集計データ(日別+店舗別売上集計を作りたいのですか。検索利用と分けて考えるべきと思いますが。 そのレベルを質問には、はっきり書かないと。 >フォームで店舗IDと日付(例:201501-201502テキストボックスは1つにするのだと思うが店舗IDはいくつまで指定しますか。カンマを入れて点コードを入力するとして、カンマでスプリット(分割)するならSplit関数があるVBAのほうが簡単でしょう。 日付も、からまで、の年月をーでFrom、Toを並べるならSplit関数が使えます。 アクセスVBAでは使えても、ACCESS関数にはSplitに類する関数は無いようです。 >サブフォームに履歴をレコードごとに表示させたい 履歴とは日付順に出すだけで、最終アウトプットのレコード順の指定で済むことではないですか。 ーー 条件が合う生のデータ(元テーブルデータ通りを集計せずに)出せばよいのでしょう。 その場合、店別合計もほしいか、店別、日付別合計もほしいのですね。質問では明確でない。 === 発想の転換。 この問題(操作者)は主に質問者一人の問題ですか。いろんな人(別社員)にやらせますか。 エクセルや、エクセルVBAにピボットテーブルという便利なツールがあります。 この利用で賄えませんか。検討してみてください。 数人なら、貴社での代表的なアウトプットのための、ピボットの操作のマニュアルを作って、それでやってもらうのはどうですか。 ピボットテーブルの機能では賄えない点はどんな点でしょうか。 ピボットテーブルを超えるシステムをAcessで作るのが大変と思いますが。質問表題の「至急」というなら なおさらでしょうね。 > 手順的な形で教えていただけると 回答に書いてある通りにすればできるように、という希望でしょうが、問題が少し大きすぎますね。

  • Ceranaj
  • ベストアンサー率58% (14/24)
回答No.1

売上履歴を記録してあるテーブルを基に、クエリを作成し、 その抽出条件欄に、条件を記述してやれば、ご希望のことが全て実現致します。 (特に難しいことではありません) 既に解決済みかとも思いますが、 以下、実現までのヒント(一例)を簡単に書かせて頂きます。 詳細は、文末に記したサイトなどで調べれば、すぐに分かると思います。 フォームは2つ(メインとサブ)作成する必要があります。(必須ではありませんが) また、売上履歴テーブルを基にしたクエリを「 売上履歴クエリ 」と仮称します。 (1)サブフォームに履歴をレコードごとに表示させたい。 ・サブフォームを表形式で作成します。 ・レコードソースは、「 売上履歴クエリ 」に設定します。 ・メインフォームを作成(レコードソースは設定しません)し、サブフォームをこの中に設置します。 ・更に、メインフォーム内に、検索条件の入力用コントロールを、抽出項目分だけ作成・設置します。 ・必要に応じて、検索ボタンを設置します。 (2)店舗ID、日付で検索させたい ・売上履歴クエリの、店舗IDの抽出条件欄、日付の抽出条件欄に、それぞれ条件を記述します。 (3)検索範囲での集計金額を表示させたい ・売上履歴クエリの、金額の集計欄に "合計”を指定します。 ・或いは、サブフォームのフッターに、合計金額(コントロール)を作成・設置し、 コントロールソース欄へ =Sum(Nz([合計金額])) と記述する。 ※ この部分は、少し工夫が必要になるかもしれません。 (参照:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1446317994) (4)月の売上履歴をテーブルに蓄積させたい。 ・売り上げを記録するテーブルに、フォームを利用して入力していくことでデータは蓄積されます。 ・検索履歴の蓄積!?ということでしたら、追加クエリを作成し、別テーブルへ書込ませます。 参考になるサイトを見つけましたので、ご参照下さい。 http://accessvba.blog.so-net.ne.jp/2013-08-02 「 access サブフォーム 検索 」などのワードで検索すれば、色々とヒットすると思います。 マクロやVBAの使用など、やり方はいくつかありますが、上記サイトでの方法が、最も簡単だと思われます。

putiabu
質問者

お礼

ありがとうございます。 今日メインフォームにサブフォームをつけて「データシート形式」で 店舗IDを入力し検索ボタンを押したら売上履歴が出るようにはなりました。 ただ、月ごとに絞って表示するところまでは行ってません しかも、なんとなくで出来たので完成した理由がさっぱりです。 (2)についてはやり方を具体的におしえていただけると助かります。 また、店舗IDを入力し検索することで店舗名もメインフォームのテキストボックスに 表示させたいです。 (4)はフォームでちまちま売り上げを商品ごとに店舗ごとに打ち込むのは一苦労なので テーブルにインポートして蓄積していけたらと思っています。

関連するQ&A

  • Access得意な方教えてください。

    検索ボタンを作りたいのですが上手くできません。 検索ボタンの絵はメインフォームに作成してはいますが そのボタンを押したらどのように動くかまで設定が組めていません。 フォームは、メインフォームに店舗IDと店舗名と売上金額合計の枠(テキストボックス) サブフォームがデーターシート形式で売上履歴が表示するようになっています。 店舗IDと期間を入力したら 店舗名と売上履歴がレコードごと(期間内の)を表示させたいです。 店舗ID:入力 期間:2014/12/01-2015/1/31 検索ボタンを押すと 店舗名:反映 サブフォーム:期間内の売上履歴が反映 売上金額の合計:期間内の売上金額の合計が反映 どのようにすればいいかネットで調べましたが よくわかりませんでした。 手順を詳しくおしえていただけると助かります。 または、VBAのような式が必要でしょうか? 教えていただけますようお願いいたします。 ※現在メインフォームの中にサブフォームをデータシート形式で 表示させるところまでやっております。

  • Access 検索した値を別フォームに

    Accessのシステムを会社で作ってます。 検索したIDをサブフォーム(データシート型) で表示したレコードを編集フォーム(別フォーム)に呼び出したいのですが上手く出来ません。 ネットでも検索しましたが良いのがありませんでした。 どなたか、お手数ですがコードを教えていただけないでしょうか? 何卒よろしくお願いします。 *adodbとDAOのどちらか使う必要があるならDAOを使用して作成したいです。 *クエリは使わずに作成したいです。 ○検索フォーム 検索ボタン ID入力テキスト 編集ボタン サブフォーム(データシート型) 編集ボタンを押すと ○編集フォーム 単帳型 *レコード項目 ID プロジェクト名 日付 モジュールNO

  • Access クエリで、レコードの無い日付も出力したい

    売上テーブル 日付   名前 金額 2007/01/01 A 100 2007/01/02 B 200 2007/01/05 C 500 2007/01/05 A 500 希望するクエリ結果 日付  件数 売上高 2007/01/01 1 100 2007/01/02 1 200 2007/01/03 0  0 << これを表示したい 2007/01/04 0  0 << これを表示したい 2007/01/05 2 1000 売上.日付 でグループ化すると、レコードの無い日付が表示されません。 集計期間内の全日付が表示されるようにするには、どうすればよいのでしょうか? 別に日付テーブルを作らなければならないのでしょうか?

  • access 2000フォーム検索 サブフォームじゃだめ?

    access 2000でフォームにリレーションされたサブフォームを設置したのですが、使う段になってから気づいたのですが、サブフォームの検索できないんですね。 できないというか、リレーションされた結果が表示されるので、その中での検索となってしまう。 フォーム内容が1体多となっている。 テーブルA id name 1 aoki 2 sasaki テーブルAのidとテーブルBのuidはリレーションされている。 テーブルB uid book 1 辞典 2 漫画 1 ノート テーブルAのid1 aokiを表示しているフォームで、テーブルBの「漫画」で検索した際に検索できるようにするにはどうすればいいでしょうか。

  • アクセスでの検索フォームの作り方

    Access2000です。超、超初心者で申し訳ありません。 でも頑張って作りたいのです。 目的はある期間の売上合計金額をパッパッと見たいのです。 営業地域、営業店名、期間(日付~日付)で検索して その期間の売上合計を表示させたいのです。 テーブルは日付、営業地域、営業店名、日計金額を入れたものを作ってあります。 営業地域、営業店名にコンボボックスを使ってフォームらしきものは出来ました。 期間を入力してそのあとボタンを押して・・・ そのボタンのところでイベントプロシージャを起動させて、そこに何か書くのだと思うのですが。 本日一日テンプレートみたいなのがないかといろーんなサイトを探しましたが見つかりませんでした。 なんとかお教えいただけないでしょうか?

  • Access2002の検索について

    社員マスターテーブル 社員ID   テキスト型 氏名   テキスト型 しめい   テキスト型 部署名   テキスト型 研修マスターテーブル 研修ID   数値型 研修名   テキスト型 受講リストテーブル 受付ID   数値型 受付日   日付時刻型 受講日   日付時刻型 社員ID   テキスト型 研修ID   数値型 研修受付クエリ 社員ID   テキスト型(受講リストテーブル) 氏名   テキスト型(社員マスターテーブル) しめい   テキスト型(社員マスターテーブル) 部署名   テキスト型(社員マスターテーブル) 受付ID   数値型  (受講リストテーブル) 受付日   日付時刻型(受講リストテーブル) 受講日   日付時刻型(受講リストテーブル) 研修ID   数値型(受講リストテーブル) 研修名   テキスト型(研修マスターテーブル) 社員が何の研修を受講したのか履歴がほしかったので「社員マスターテーブル」と「研修受付クエリ」を使ってメインサブフォームを作りました。 やりたい事は、このメインサブフォームに検索のボタンを作りたいのです。 社員IDまたは社員名または受講日のいずれかを入力するし検索ボタンをクリックするとメインサブフォームに結果を出したいのです。 マクロのフィルタ?をやってみたのですがよく意味が分からずできませんでした。 どうぞお手数ですがご教授頂けないでしょうか?

  • Access2000の件です。

    OSがWIN98で、Access2000をやってます。 1)カレンダーコントロールで選択した日付のデータを、 2)テーブルから抜き出して、サブフォームで表示し、 3)コマンドボタンで新しいレコードの追加を行い、 4)追加したレコードに、年月日+通し番号の識別IDのみを   デフォルトで与え、その通し番号を、テキストBoxに、   表示させようとしています。 私なりの作業 1)カレンダーにクリック時のイベントが無かったので、   年月日という名のテーブルに、現在選択されている   日付を代入するマクロを、コマンドボタンのイベントにしました。 2)クエリを作り、抽出条件に   ≪[年月日]![年月日]≫が日付と等しい、にしたフォームを   作り、サブフォームに設定しました。 ところが、この時点で、サブフォームに検索されません。 前回終了時に年月日テーブルに保存された日付でしか、 検索されません。 いろいろ考えてましたので、各コントロールの設定も、 かなりいじってます。 ひょっとしたら簡単なことなのかも、しれません。 が、煮詰まってしまってますので、考え付きません。 どうか、助けてください。

  • クエリの検索条件をフォームから入力したい

    フォーム2つの変数を入力して、クエリにレコードを検索させたいと考えています。 具体的には、 コンボボックスから店舗名を選び、 テキストボックスに抽出する期間を入力して、 それをクエリに反映させて期間内の対象店舗における来店者数を調べたいのですが、うまくいきません。 詳細は、以下のような形です。 テーブル: ・顧客情報(氏名・来店日・来店した店舗番号) ・店舗(店舗番号・店舗名) 「店舗」テーブルは、顧客情報でルックアップできるようにしています。 フォーム: ・フォーム名:来店履歴 ・コンボボックス(名前:店舗選択)で店舗を選択し、 ・テキストボックス2つ(名前:日付1・日付2)に日付を入力する クエリ: ・店舗テーブル、店舗番号 [Forms]![来店履歴]![店舗選択] ・顧客情報、来店日 Between [Forms]![来店履歴]![日付1] And [Forms]![来店履歴]![日付2] 思い当たるフシとしては、 ・コンボボックスへの設定の仕方があっているかどうかが分からない。 現在は、来店履歴フォームのコンボボックスへのプロパティを、 値集合ソース:店舗テーブル 列数:2 連結数:1 にしています。 顧客情報テーブルで設定しないといけないのでしょうか?? ・クエリの集計欄がグループ化のままで良いのかどうかが分からない。 where関数でやるみたいなことを聞きましたが、やってみてもうまくいきませんでした。 現在は、フォームで入力は出来るものの入力しても無反応で何も表示されないという状況です。(最初から何も表示されていません) もうワケが分からなくて大変困っております。 どうぞよろしくお願いいたします。

  • アクセス2000を使ってのデータ集計方法

    はじめまして、アクセス2000を使って支払テーブルを作成しました。フィールドは、日付 メーカーID 金額 現場名ID 勘定科目ID・・等です。 メーカと現場名と勘定科目はマスタテーブルを別に作って そこから参照させています。これにデータを打ち込んでいって月別金額集計と メーカ別金額集計と 現場名別金額集計と勘定科目別金額集計をさせたいのですが フォームとレポートに支払テーブルレコードを表示させて 合計金額を表示させるにはどのようにすれば良いでしょうか? 判りにくい説明ですが 4月分のデータを一覧表示させて合計金額を表示次に5月分のデータを一覧表示させて合計金額を表示と言う具合です

  • Access フォーム検索

    お世話になっております。 フォームに日付を入力した時に、フィールドに同じ日付があった場合、そのレコードのデータを表示するにはどのようにすればいいのでしょうか? テーブルは、[日付]を主キーにしたクエリテーブルです。 よろしくお願い致します。

専門家に質問してみよう