50個分のクエリとフォームを作らないといけないのか!?

このQ&Aのポイント
  • フォーム(検索)のコンボボックスを使って会社名を選択しているが、タッチパネルLCDでは操作が難しいため、フォーム(五十音)とコマンドボタンを作成し、五十音別に会社を抽出して表示させる方法を採用している
  • 現在の方法では50個のクエリとフォームが必要になるが、他に簡単で明解な方法があるか検討したい
  • 要望はコンボボックスの枠を大きくする方法ではなく、コマンドボタンを使用する方法である
回答を見る
  • ベストアンサー

50個分のクエリとフォームを作らないといけないのか!?

50個分のクエリとフォームを作らないといけないのか!? 素人が見よう見まねで作っていますので、分かり難いかと思いますが、 何卒よろしくお願い致します。 現在、フォーム(検索)があり、そこに非連結コンボボックス(テキスト1)が あります。このコンボボックスは、テーブル(取引先)の値(会社名)を参照して います。会社名は約200あります。 テーブル(取引先)のフィールドは会社名、フリガナ、五十音別です。 今迄は、マウス操作で会社名を選んでいました。今度、タッチパネルLCDを 使う事になったのですが、コンボボックスでは、文字は大きく出来ても、 コンボボックスの枠やスクロールバーの幅を大きく出来ず、うまくタッチ パネルでの操作ができません。 そこで、新たにフォーム(五十音)を作り、五十音分(あ~ん)のコマンドボタン を作り、コマンドボタン”あ”を押すとクエリ”あ”で、テーブル(取引先)の 五十音別が”あ”の会社だけ抽出させ、結果をフォーム(あ)に表形式で表示 させました。 さらに、マクロ(値の代入)で、フォーム(検索)のコンボボックス改めテキスト ボックス(テキスト1)に会社名を代入させました。 回りくどい事だと思いますが、これで、マウスで選ぶのと同じ事が出来ました。 しかし、この方法だと、クエリとクエリの結果を表示させるフォームが、それ ぞれ50づつ必要になってしまいます。 50づつ作ってもいいのですが、きっと他にもっと簡単で明解な方法があると 思うのですが、素人ゆえ、全く見当がつきません。 簡単な方法がありましたら、ご教授のほど宜しくお願い致します。 なお、わがままを言って申し訳ありませんが、コンボボックスの枠を大きくした りではなく、コマンドボタンを使う方法でお願い致します。

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

  • ベストアンサー
  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

まずはヒントだけ、 「フォームで入力した値をクエリの抽出条件」にできますから検索してみて下さい。 クエリの抽出条件は「あ」限定「い」限定となるような記載にしてますか。「あ」や「い」自身をパラメータ感覚で与えてやります。 「あ」のためのクエリ、フォーム 「い」のためのクエリ、フォーム ~ と作らなくてもよくなります。 フォームで条件を選ぶ、クエリで該当条件抽出、再クエリ、フォームにその条件で結果表示、フォームで違う条件を選ぶ、クエリで該当条件抽出、再クエリ、フォームにその結果表示、この繰り返しです。クエリもフォームも1つという構造にします。 クエリの抽出条件記載を工夫し数減らします。

fkey29
質問者

お礼

早速のご回答ありがとうございました。 クエリの抽出条件をフォームのテキストボックスの値に すれば、クエリも検索結果を表示するフォームも1つで 済むということは知っていたのですが、コマンドボタン だけで、どうにかしようとばかり思っていたため、その 事を完全に失念していました。 ヒントを元に、フォーム内にテキストボックスを作り、 コマンドボタンのクリック時イベントで、"あ"~"ん"を テキストボックスに代入させることにしました。 お陰様で、クエリもフォームも1つずつで済みました。 この度はありがとうございました。

関連するQ&A

  • フォームを開くボタンを1個でコントロールしたい

    「やりたいこと、ご指導頂きたいこと」 1,現在の運用方法(下記)ではコマンドボタンが4個と多く、使いづらいのでコマンドボタンを1個で完結できる方法が知りたいです。 2,個人的なお願いですが「マクロ」で対応できる方法があれば、そちらでお願いしたいと思います。理由は、VBAのスキルが低レベルで話にならない為。但し、不可の場合は、可能な方法でご指導願います。 「現在の運用方法の紹介」 企業の連絡情報帳をアクセスで運用しています。尚、フィールドの数は10ありますが、質問内容には検索項目の4個を紹介させて貰っています。 運用の概要ですが、検索専用フォームにコンボボックスを4個つくり、コンボボックスで企業リストテーブルを参照させて希望のフィールド(会社名、製品名、商品名、得意技)を選択させています。選択後はコンボボックスの横に配したコマンドボタン4個を使って個別フォームを開いている。運用の背景ですが、絞込検索では都合が悪い事情がある為です。 「各オブジェクトの紹介」 1,テーブル名:企業リスト 2,フォーム名:検索専用フォーム(レコードソースなし) 3,コンボボックスの名前:会社名、製品名、商品名、得意技 ・企業リストの各該当フィールドを値集合ソースにて参照 4,企業リストクエリ ・会社名(検索専用フォームのコンボボックス「会社名」を抽出条件に) ・製品名(検索専用フォームのコンボボックス「製品名」を抽出条件に) ・商品名(検索専用フォームのコンボボックス「商品名」を抽出条件に) ・得意技(検索専用フォームのコンボボックス「得意技」を抽出条件に) 5,フォーム名 ・会社名検索結果(レコードソースに会社名クエリ参照) ・製品名検索結果(レコードソースに製品名クエリ参照) ・商品名検索結果(レコードソースに商品名クエリ参照) ・得意技検索結果(レコードソースに得意技クエリ参照) 以上ですが、他に細かな設定(ファイル操作・選択文字の選択後の消去・等々)もありますが割愛して居ります。どうか宜しくお願いします。

  • フォームで入力された文字をクエリのフィールド名として反映させたい 【Microsoft Access】

    Microsoft Accessに関する質問です。バージョンは2003です。 フォーム"Fo1"に、テキストボックス"Te1"とクエリの実行を行うためのコマンドボタン"CB1"があるとします。コマンドボタン"CB1"を押すことでクエリ"Q1"が実行されるよう、イベント プロシージャに記載しています。クエリ"Q1"にはテーブル"Ta1"が表示されており、テーブル"Ta1"は複数のフィールド("Fi1","Fi2","Fi3",…)を有するものとします。 このような状況において、テキストボックス"Te1"に複数のフィールド("Fi1","Fi2","Fi3",…)のうちのどれかを記述し、コマンドボタン"CB1"を押したときに、テキストボックス"Te1"に記載されたフィールド名のデータを実行結果として出力したいと考えています。 そこで、クエリ"Q1"の「フィールド:」の部分に [Forms]![Fo1]![Te1] と記入し、「テーブル:」の部分に"Ta1"を指定した後、クエリを保存して(このときにはフィールド名の記入した部分は「式1: [Ta1].Forms![Fo1]![Te1]」と表示されています)閉じた後に、フォーム"Fo1"を開き、テキストボックス"Te1"に出力させたいフィールド名を記載しコマンドボタン"CB1"を押してみました。 すると、「パラメータの入力」というダイアログが立ち上がり、ダイアログ内には「Ta1.Forms!F01!Te1」という記述とテキストボックスが出力されました。テキストボックスに無記入で"OK"ボタンを押したところ、出力結果に「式1」という列が現れ全てのセルが空白となってしまいました。 フォームや、クエリに記入する表記が間違っているのか、そもそも出力させるフィールド名をフォームから指定するという方法が根本的に違うのかわかりません。 申し訳ありませんが、当方Accessに関しては初心者ですので、極力専門用語は少なくご教授いただければと思います。よろしくお願いします。

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

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

  • アクセス チェックボックスとクエリ

    いつもお世話になっております。アクセス初心者です。 あるフォームのチェックボックスのオンオフとコンボボックス、 クエリの選択条件が思うように連携できなくて困っています。 やりたいことは、、、フォームのチェックボックスが、 ON(True)ならば、 フィールドにコンボボックスのキーワードを含むレコードおよびフィールドが空白のレコードを抽出し、 OFF(False)ならば、 フィールドにコンボボックスのキーワードを含むレコードのみでフィールドが空白のレコードは抽出しない、 としたいのですが…。 IIfやSwitchで式を書きましたが、チェックを入れても外しても、どちらも抽出件数が0件になります。 クエリの実行は、コマンドボタンで別のフォームを開いています。 (IIfでは、エラーが出ているのか、チェックを入れた時『~キャンセルされました』と出ます。  IIf(…,…,IIf(…,…,…)) という感じで書きました。) Switchの時のクエリの抽出条件の式は、次のような感じです。 Switch([Form]![チェックボックス]=True,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*" Or Is Null,[Form]![チェックボックス]=False,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*") ( Like の前の『([テーブル名].[フィールド名])』は、式をビルドすると、勝手に追加されてきます。) このようなことはできないのでしょうか? 別の方法が必要でしょうか? すみませんが、教えてください。宜しくお願い致します。

  • テーブル・クエリ・フォーム どれがいい?

    アクセス初心者の為、よくわからないので教えてください。 テーブル1があり そこには ID(主キー/オートナンバー型) フィールド1(テキスト型)があります。 そのテーブルを基にクエリ1作成してます。 [SELECT テーブル1.* FROM テーブル1;] です。 また、テーブル1をレコードソースとしたフォーム1も作成しています。 そして図のようにメインメニューフォームを作成し それぞれのコマンドボタンを設置しました。 モジュールには --------------------------------------------------------- Option Compare Database Option Explicit Private Sub コマンド0_Click() DoCmd.OpenTable "テーブル1", acViewPivotTable End Sub Private Sub コマンド1_Click() DoCmd.OpenQuery "クエリ1", acViewPivotTable End Sub Private Sub コマンド2_Click() DoCmd.OpenForm "フォーム1", acFormPivotTable End Sub --------------------------------------------------------- と書いたので どのボタンを押してもピボットテーブルを開けます。 しかしどれか一つにしたいのですが 今後運用するにおいてどれで開けばいいのでしょうか? ピボットテーブルビューで開くならどれも同じでしょうか? 今回はピボットテーブルビューで表示していますが データシートビューでも表示させたい場合があれば 「フォームなら条件付き書式が設定できるからフォームが良いかなー」 と思っています。 確かテーブルやクエリでは条件付き書式はできなかったような・・・ 全てのビューで開くにおいて テーブル・クエリで開くメリットがあれば教えてください。 ご回答よろしくお願いします。

  • クエリの抽出条件

    クエリの抽出条件に [担当者を選んでください] クエリを開いた際に、担当者をドロップダウン一覧から選べるようにしたいのですが [Forms]![フォーム名]![コンボ名]は分かるのですが・・・ フォーム名とは、何を入力すれば良いのでしょうか? コンボ名はコンボボックスを作成した担当者名だと思いますが・・・? 基本的に1つのテーブルに全部の項目を入力し、クエリーを作成しています フォームは作成していました。 しかし、フォーム名を入力しても、コンボボックス名を入力しても[担当者を選んでください] の場所の名前が変わるだけなんです?? ご回答の程、よろしくお願い致します。

  • フォームでパラメーターを求められます

    フォームにコンボボックスを作りました。 コンボボックス(年指定)の中は、 2005 2006 2007 ・・・・・・・・・・・ といったような年度の位置づけです。 さらにコマンドボタンを作ってクリック時にマクロを指定しました。 マクロには、 アクションが「クエリを開く」があり、 クエリは普通の選択クエリで、 実績年フィールドの抽出条件に、 =[Forms]![フォーム1]![年指定]としました。 これでコンボボックスで選んだ年度のデータが抽出されて表示されるのかと思っておるのですが、 コマンドボタンを押すと、 パラメーターの入力を聞いてきます。(Forms!フォーム1!年指定) どこが間違っているのでしょうか? 情報不足かもしれませんが、ご指導ください。

  • 選択クエリでの複数抽出条件の記述について

    フォーム上に「テキストボックス」、「コンボボックス」、「チェックボックス」の項目があって、それぞれの条件に合致した、データを抽出する選択クエリを書いてるのですが、うまく抽出してくれません。 「テキストボックス」、「コンボボックス」には、[Forms]![テーブル名]![入力するボックスの名前] or 、[Forms]![テーブル名]![入力するボックスの名前] is nullと記述しています。 「チェックボックス」には、、[Forms]![テーブル名]![チェックボックスの名前] = True or [Forms]![テーブル名]![チェックボックスの名前] = Falseと記述しています。 しかしながら、任意のコンボボックスからテキストを選択し、チェックボックスにレのついたデータを抽出したくても正しいデータを表示してくれません。 どなたか、クエリに詳しい方よろしくお願いいたします。

  • ACCESS クエリの抽出条件

    毎度お世話になります。 クエリをレコードソースとするフォームから、コマンドボタンでアクションクエリを実行するときの抽出条件の書き方を教えて頂けないでしょうか? 二つのテーブル(別のACCESSファイルからリンク)を基にパラメータクエリを作っています。 そのクエリを基にフォームを作っています。 さらに、そのフォームに追加クエリを実行するボタンを置いています。 フォームに表示してあるレコードだけ(パラメータで抽出されたレコードだけ)、他のテーブルに追加しようと思っているのですが、実行ボタンを押すともう一度パラメータが出てきてしまいます。 多分テキストボックスの値を読み取る際にレコードソースがテーブルでないのが問題じゃないかと思うのですが。。。 テーブル:Container / Items クエリ:From_Con(パラメータは[Container]フィールド) フォーム:From_Con(テキストボックス名は[txtContainer]) 追加クエリ:From_Con_App(抽出条件は[Forms]![From_Con]![txtContainer]としてみたがうまく動きません。) デザインビューの抽出条件を使う方法? SQLを使う方法? QueryDefを使う方法? いろいろありそうですが、ネットで検索してもヒットしません。 分かりにくい説明で申し訳ありませんがご教授願います。

  • Accessのクエリ

    初めまして。Accessのクエリについての質問です。 Access2003を使っています。 検索フォームを作り、その検索フォームにテキストボックスを2つ作り、そのテキストボックスに検索したい言葉を入力し、コマンドボタンで作った検索ボタンを押すとマクロでフィルタの実行がされデータを抽出できるというものを作りました。フィルタには選択クエリを使用しています。抽出したい2つのフィールドの抽出条件にあいまい条件のLike "*" & [Forms]![フォーム名]![テキストボックス名] & "*"を入れています。 今はテキストボックスが2つですが、もっと増やしていろんな条件で検索出来るようにしたいので、3つ目のテキストボックスを作り、抽出条件も同じように入れました。ですが、そうすると今までちゃんとできていた最初の2つのテキストボックスによる抽出が違った結果となりでてきました。このとき、新しく作った3つ目のテキストボックスは空欄なので最初と同じ結果が出ると思ったのですが、これは抽出条件が3つはできないということでしょうか?どなたか教えてください。

専門家に質問してみよう