ACCESS2003のフォーム抽出について

このQ&Aのポイント
  • ACCESS2003を使用してスーパーマーケットの商品売り上げ管理を行っています。テーブルから抽出する際に、パソコン初心者でも操作できるようにフォームを作成しようと考えています。具体的なフォームの作成方法について教えてください。
  • フォームを作成する際、以下の抽出条件を設定したいと考えています。売上期間、店舗名、商品名、価格、売上個数、売上合計、割引率の条件を入力できるようにし、これらの条件を満たすデータを抽出するフォームを作成したいです。
  • また、フォームで抽出した結果を表示する際には、売上期間、店舗名、商品名、価格、売上個数、売上合計、割引率の情報を表示し、割引率が有効の場合は割引率を表示、無効の場合は0%と表示するようにしたいです。フォームの作成方法についてアドバイスをください。
回答を見る
  • ベストアンサー

ACCESS 2003のフォーム抽出について

こんにちは、ACCESS2003を使ってスーパーマーケットの商品売り上げ管理を作っています。 テーブル名:売上管理T      (売上日.店舗名.商品名.価格.売上個数.売上合計.割引率) 上記のテーブルをクリエを使って私やパソコンに詳しい人は抽出する事は可能ですが、 パソコンがあまり詳しくない方にも操作出来るようにしたいのです。 そこで、クリエの抽出条件の所に("条件を入れてね。”とか”店舗店は?”)などダブルコーテーションで括りポップアップで入力出来るようにしました。 クリエ名:売上検索C 売上日 :BETWEEN関数で期間を指定 店舗名 :上野店、新宿店、渋谷店、品川店、 商品名 :とんかつ、コロッケ、アジフライ、から揚げ、など 価格  :単価 売上個数:数量 売上合計:価格*売上個数 割引率 :バーゲンや閉店間際の割引を、30%~70%設定  (割引販売分は別途テーブルを作成予定。)) しかし、操作する人に、 ”最初に店舗名、なんて入れたか忘れる。”、”表が小さくて見ずらい”、”紙又はCSV出力できないか?” と言われてしまいました。 そこで、フォームを作成、フォームで表示.印刷しようと思い上記のクリエを基本に作ろうと思いました。 いままで、フォームで抽出条件等を作った事がなく、本屋等を見て廻ったのですが 大半の本が、フォームで新規入力するものばかりで私の意にするものがありませんでした。 ネットを参考に作ってみたのですが、どうもわかりません。 どなたか、構文例を用いて教えてくださいませんか? ちなみにフォームを以下のように作成しようと思っています。 フォーム名:売上検索F <抽出条件> 売上期間 : ”A期間” ~ ”B期間”←(売上日) 店舗名  : ”**店”        ←(リストボックスorコンボボックスにする予定) 商品名  : ”とんかつ”       ←(ここは手入力orコンボボックスにする予定) 価格   : ”値段”         ←(300円以上の商品を検索する時に使う) 売上個数 : ”個数”         ←(100個以上売れた商品を検索する時に使う) 売上合計 : ”売上合計金額”     ←(販売期間中、1万円以上売れた商品の検索する時に使う) 割引率  : ”**%””       ←(特売時、割引率を30%以上を検索する時に使う。レ点で有効、無効を設定したい。) <検索結果表示例> 売上期間 : ”A期間” ~ ”B期間”←(表示のみ) 店舗名  : ”**店”        ←(表示のみ) 商品名  : ”とんかつ”       ←(表示のみ) 価格   : ”値段”         ←(表示のみ) 売上個数 : ”個数”         ←(表示のみ) 売上合計 : ”売上合計”       ←(表示のみ) 割引率  : ”**%””       ←(有効の場合は割引率を表示、無効の場合は0%と表示)  売上日 : 店舗名 : 商品名 : 価格 : 売上個数 : 売上合計 :割引率  □□□   □□□   □□□   □□□  □□□    □□□   □□□  △△△   △△△   △△△   △△△  △△△    △△△   △△△  □□□   □□□   □□□   □□□  □□□    □□□   □□□  △△△   △△△   △△△   △△△  △△△    △△△   △△△ この抽出条件の内、1箇所でも入力できていれば”テーブル名:売上管理T”から抽出するようにしたいんです。 素人の考え方ですいませんが、お知恵を貸してください。よろしくお願いします。

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

  • ベストアンサー
  • psgrade
  • ベストアンサー率86% (19/22)
回答No.1

フォームを「売上管理T」をレコードソースとする表形式のフォームを作成し、そのフォームヘッダ部分に抽出条件を指定するコンボボックス、抽出実行コマンドボタンを配置します。抽出実行ボタンがクリックされたら、Where構文を作成し、フォームのフィルタープロパティーに設定(Me.Filter=MyCriteria)、フィルターを実行(Me.FilterOn=True)とするとフォームに抽出されたレコードのみが表示されます。 これをVBAで抽出実行コマンドボタンのクリック時イベントに記述して行く必要が在ります。 例えば、以下のようになります。 Private Sub MyFilterSet() Dim MyCriteria As String 'Where構文を設定する文字型変数 If Me.FilterOn Then Me.FilterOn = False If IsNull(Me![店舗名]) Then MyCriteria = "" Else MyCriteria = "店舗名='" & Me.店舗名 & "'" '完全一致で検索する場合 'MyCriteria = "店舗名 Like '*" & Me.店舗名 & "*'" '店舗名の一部入力で検索する場合は、このように含むもので検索するように設定します。 End If If IsNull(Me![商品名]) Then Else If MyCriteria <> "" Then MyCriteria = MyCriteria & " And " End If MyCriteria = MyCriteria & "商品名='" & Me.商品名 & "'" End If If IsNull(Me![価格]) Then Else If MyCriteria <> "" Then MyCriteria = MyCriteria & " And " End If MyCriteria = MyCriteria & "価格 >= " & Me![価格] '価格を数値で指定してそれ以上のもので検索 End If If IsNull(Me![売上個数]) Then Else If MyCriteria <> "" Then MyCriteria = MyCriteria & " And " End If MyCriteria = MyCriteria & "売上個数 >= " & Me![売上個数] '売上個数を数値で指定してそれ以上のもので検索 End If If IsNull(Me![売上合計]) Then Else If MyCriteria <> "" Then MyCriteria = MyCriteria & " And " End If MyCriteria = MyCriteria & "売上合計 >= " & Me![売上合計] '売上合計を数値で指定してそれ以上のもので検索 End If . If IsNull(Me.売上期間開始年月日) And IsNull(Me.売上期間終了年月日) Then ElseIf Not IsNull(Me.売上期間開始年月日) And IsNull(Me.売上期間終了年月日) Then If MyCriteria <> "" Then MyCriteria = MyCriteria & " And " End If MyCriteria = MyCriteria & "[売上日]>=#" & Me.売上期間開始年月日 & "#" ElseIf IsNull(Me.売上期間開始年月日) And Not IsNull(Me.売上期間終了年月日) Then If MyCriteria <> "" Then MyCriteria = MyCriteria & " And " End If MyCriteria = MyCriteria & "[売上日]<=#" & Me.売上期間終了年月日 & "#" Else If MyCriteria <> "" Then MyCriteria = MyCriteria & " And " End If MyCriteria = MyCriteria & "[売上日]>=#" & Me.売上期間開始年月日 & "# And [売上日]<=#" & [Me.売上期間終了年月日 & "#" End If Me.Filter = MyCriteria 'フィルタプロパティに抽出条件を設定 Me.FilterOn = True    '抽出実行 End Sub 抽出実行コマンドボタンのクリック時イベントに Call MyFilterSet と記述します。 別にクリアボタンを作成して、クリック時イベントに次のように記載すれば、クリックすると選択解除され、全レコードが表示されます。 Me![店舗名] = Null Me![商品名] = Null Me![価格] = Null Me![売上個数] = Null Me![売上期間開始年月日] = Null Me![売上期間終了年月日] = Null Call MyFilterSet 不明点があれば、お知らせ下さい。

nabepapa
質問者

お礼

お礼が遅れてすいません。 例題を挙げて頂き、大変参考になりました。 じっくり、コードを読ませていただいて、フムフムと考えるばかりです。 今回はありがとうございました。

その他の回答 (1)

  • psgrade
  • ベストアンサー率86% (19/22)
回答No.2

回答の補足です。 抽出条件設定のテキストボックス名として、テーブルのフィールド名と同じ名前を指定しましたが、これですとレコードのデータを表示するテキストボックス名と重複してしまいますので、抽出条件設定用のテキストボックス名は、フィールド名+"選択"等名前を変更してください。 VBAで使用した名称は、変更する必要があります。

関連するQ&A

  • Accessの抽出の仕方

    Accessの抽出仕方について教えてください。 あるデータ(テーブル)をクリエに表現したいのですが? 1:テーブルのデータの並びが縦列に並んでいます。 例) ロボット  パーツ 個数 金額(一個当たり)  腕   2  100円 胴体  1  500円 足   2  200円 顔   1  1000円 合計  6  1800円   →このデータ項目を横並びに並べて、合計金額が加えて算出し、表示をしたいと思っています。 完成イメージ) 商品名  パーツ 個数 金額 合計金額     合計 ロボット  腕  2  100円  200円 ....  1800円 この様にもともとのデータの並び方を変えて表示し、必要な項目を抽出 する方法を教えて頂けないでしょうか? 宜しくお願いします。

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

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

  • Access2003 検索フォームからのデータ抽出について

    ご観覧者の皆様、お世話になっております。 以下の内容についてアドバイスを頂きたく質問させていただきました。 Microsoftのサポートオンラインページ [データを抽出する方法] http://support.microsoft.com/default.aspx?scid=kb;ja;881379 上記サイトどおりの方法で検索フォームを作成してみました。 …出来ました、全く問題なく。。 出来上がったものから、フィールド名やフィールド内へ入力する文字列を自分用に変更してみたところ、 「パラメータの入力」というダイアログが、検索フォームを起動したタイミング(サイト内でいうところの「30.」番)で 表示されてしまうようになってしまうのです。 ■変更箇所 ・商品名/個数/単価 とフォームに表示されるものを、  商品名/個数 の2つにしました。 ・2つのフィールド名を 製品型名/参照 と変更しました。 ・テキスト形式だった個数のフィールドをハイパーリンクに変更しました。 以上の条件でフォームを起動しようとすると「パラメータの入力」が 表示されるようになってしまいます。どうしてでしょうか?解決策を教えてください。

  • Accessクエリの抽出条件にフォームから挿入する方法(2)

    フォームにいくつかの抽出条件を指定するためのテキストボックスをセットし、そこに入力されたデータをクエリの抽出条件に挿入しデータ抽出を行っておりますが、たとえば販売期間でデータを抽出するために、クエリの抽出条件に Between [Forms]![フォーム名]![売上日FROM] And [Forms]![フォーム名]![売上日TO]と入力しているのですが、テキストボックスに指定日付が入っていれば問題なく抽出できるのですが、販売期間の指定なしの場合、売上日from及び売上日TOがNULLとなるためか抽出結果がゼロ件になってしまいます。 期間指定なしの場合でも抽出ができるようにするためにはどのように記述すればよいか教えてください。よろしくお願いいたします。

  • Accessフォームでデータ入力できない(初心者)

     テーブルにて各種データを入力して、それに基づいてクリエにて数式を使って2つの値を算出。 テーブル:原価、経費、利益率、商品名 クリエ:販売価格、利益金額  テーブル、クリエのすべてのデータを使ってフォームを作成したのですが、テーブル部分のデータをフォームにて入力・編集できません。テーブルのみを使ってフィールドを作成すると入力・編集できるのですが、クリエにて作成した「販売価格、利益金額」を表示できません。  フォームにテーブル、クリエのすべてのデータを表示でき、かつフォームでテーブルデータを編集できるようにするにはどのようにしたらよいのでしょうか。  当方、Accessはほとんど初心者のようなものです。すみませんが、よろしくお願いいたします。 Win7-64bit、Access2010

  • Accessのフォームの書式設定

    売上のテーブル(売上テーブル)を元にクエリ(売上クエリ)を作りました。そしてその売上クエリを元にフォーム(売上フォーム)を作りました。オートフォーム(単票形式)で作ったのですが、フォームビューからデザインビューへ切り替えました。「ラベル」(ID、商品名、価格)と「テキストボックス」(ID、商品名、価格)が表示されています。「ラベル」も「テキストボックス」に表示されている名前の文字(ID、商品名、価格))は全て左揃えで表示されているのに、実際にフォームビューでは「価格」の数値の表示は右揃えされています。これはどうしてでしょうか?数値はエクセルなどと同じで右揃えされるのでしょうか? その後、デザインビューへ切り替えて「テキストボックス」の「価格」を中央揃えにしてフォームビューに切り替えてると中央揃えにはなっていました。オートフォームで作ったすぐの状態では、デザインビューではテキストボックスの表示されている文字は全て左揃えになるがフォームビューでは数値は右揃えになるのでしょうか? 教えてください。

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

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

  • Access2003 フォームを開くときの抽出設定について

    WindowsXP SP3+Access2003 環境です。 メニューフォームからデータのあるフォームを開こうと考えています。 ボタンウィザードでボタンを用意しようと思い、ウィザードの抽出条件としてメニューフォーム上のテキストボックス[txt_出庫用商品名]を設定しました。 データフォームの[商品名称]というフィールドと全てマッチすると抽出されるのですが、抽出したい文字列を【含む】場合の書式がうまく書けません。 (=ワイルドカードの配置がわかりません) ウィザードから自動的に記述されている以下について、"Me![txt_出庫用商品名]"を【含む】データを抽出する場合の記述を教えてください。 stLinkCriteria = "[商品名称]=" & "'" & Me![txt_出庫用商品名] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria よろしくお願い致します。

  • ACCESS2003のグループ化のエラーについて

    こんばんは、ACCESS2003のグループ化について助言をお願いします。 (OS:WIN7) ”TBL1”から抽出して”クリエ1”を作成したものがあります。 この”クリエ1”からさらに”クリエ2”を抽出して、フォームから入力できるように”フォーム1”を作成しました。 (”クリエ1”は他の方が作成したのを借りている状態です。) ”クリエ2”には”日付”、”商品番号”、”単価”があり、”フォーム1”で使えるように ”クリエ2”の各項目に以下のように抽出条件を設定、フォームから入力出来るようにしました。 <日付> Between nz([forms]![f_kensaku]![day_s]) And nz([forms]![F_kensaku]![day_e],#2099/12/31#) (空欄でも表示されるように”Nz()”を使いました。) <商品番号> Like "*" & [Forms]![f_kensaku]![shouhin] & "*" <単価> Like "*" & [Forms]![f_kensaku]![tanka] & "*" ”フォーム1”及び”クリエ2”から実行して問題なく検索できるのですが 日付、商品番号、単価が重複して見ず来らいので、”クリエ2”の”Σ”からグループ化を実行するとエラーとなってしまいます。 <エラー表示内容> 集計関数の一部として指定された式(上記3個のSQL文が表示)を含んでいないクエリを実行しようとしました。 当然、グループ化を外すと問題なく動くのですが、何が悪いのでしょうか?

  • Accessのフォームでの合計欄を二つにわけたい

    テーブル1;売上明細T フィールド名;売上明細番号、商品コード、数量、摘要 テーブル2;商品T フィールド名;商品コード、商品名、単価 クエリで売上明細と商品Tをつなぎ、下記のように表示します。 商品コード 商品名 摘要  数量  単価 明細計                  (数量*販売単価) 001    物件1  作業代  1  500 500 002    物件2  作業代  2  400 800 051    物件51  作業代  1  500 500 051    物件51  交通費  1  350 350  上記クエリを元にフォームを作成(帳票形式)して、 テキストボックスで課税対象計(作業代計)と、非課税対象計(交通費計) のボックスをもちたいのですが可能でしょうか? 最終的には、売上伝票フォームに売上明細フォームをサブフォームで 取り込み、売上伝票上で合計金額を表示させたいと思っています。 よろしくお願いします。

専門家に質問してみよう