• 締切済み

アクセスで同じフォームを違うクエリで共用したい

 アクセスで、同じフォームでの複数人が入力作業を行うのですが、作業者によって少しづつ条件の違う検索をクエリで行っています。  このとき、フォームは作業者の数だけ作成しておかなければならないでしょうか?  フォームの手直しをする際に1回で済むように、違うクエリを使った場合も同じフォームが利用できれば、大変助かるのですが、現状では作業者の数だけフォームの修正が必要で困っております。  何か、良い解決の方法があればお教えください。

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>違うクエリを使った場合も同じフォームが利用できれば 簡単な方法としては 1つの入力フォームを使い簡単にレコードソースを変更するには入力フォームをサブフォームの様に使います。 デザインビューで1つのコントロールが何もないフォームを作ります。これを例えばフォームAとします。 フォームAの中に入力フォームをサブフォームとして配置します。 フォームAに作業者用のボタンを作ります。例えば作業者が3人でクエリが各クエリ1・クエリ2・クエリ3とします。 作業者1のボタンのクリック時イベントに Private Sub 作業者1_Click() Me![入力フォーム].Form.RecordSource = "クエリ1" Me![入力フォーム].Requery End Sub 同様に作業者2のボタンには Private Sub 作業者2_Click() Me![入力フォーム].Form.RecordSource = "クエリ2" Me![入力フォーム].Requery End Sub のようにし作業者3ボタンも同様です。 入力フォームを開く時はフォームAを開くようにして作業者のボタンで入力フォームのレコードソースとなるクエリを変更させ使用すれば簡単だと思いますが。 これならフォームAと入力フォームを配布すれば同じ様にフォームを開き作業者が必要なボタンでレコードソースを切り替えられるので簡単。 試してみてください。

junkun2jp
質問者

お礼

お世話になります。  マクロから「フォームを開く」に続けて「フィルターの実行」で、使いたいクエリを指定すると、上手く行くようで、当分は、この方法でゆけそうです。  余談ですが、対象レコードが増えたときにリストボックスでレコードを選べるようにしようとすると、フィルター実行前のレコードリストしか表示されないようで、リストボックスの「値集合ソース」にフィルターを掛けた指定が上手く出来ないのでつまずいています。  VBAは勉強中なのでまだまだ、使いこなせませんが、研究してみます。

  • akipapa
  • ベストアンサー率38% (34/89)
回答No.1

クエリをフォームのレコードソースに設定している場合なら、以下の方法が使えます。 Form_Load()のイベントとして、レコードソースをユーザーによって切り替える方法をお試しください。 Me.RecordSource = "クエリー1" If ○○○ Then Me.RecordSource = "クエリー2" End If フォームを開く時点で、どのクエリを使うか判定する方法(上記の○○○の部分)は、業務仕様により決める必要があるので、ご自分で検討してみてください。

junkun2jp
質問者

お礼

お世話になります。 条件分枝の設定に、変数をあてなければならないのでしょうが、VBAは得意ではないので、マクロで何とかならないか試しています。

関連するQ&A

  • ACCESS のフォームの内容をクエリーの抽出条件にするには?

    Windows2000,Access2000です。 Accessのクエリーでデータを選択して表示する作業をしています。 現在はクエリーを自分で修正して実行しています。 でもそれではみんなで使うには使いづらいので、 フォームを作成しそのフォーム上の入力項目に入力された データをクエリーの抽出条件に指定する様にしようという事になりました。 フォーム上の入力フィールドの内容をクエリーの抽出条件に設定する方法はすぐわかりました。 でも「like」を指定する方法がわかりません。 つまりフォーム上の入力データを“xxx”とした時、クエリーの抽出条件を 「like "*xxx*"」としてクエリーを実行したいのです。 つたない文章でわかりにくいかと思いますが、ご存じの方おりましたら、 よろしくご教示ください。

  • access 登録したデータを修正するフォーム

     accessで、データを登録するフォームを作成しました。次にそのデータを修正をするフォームを作成しようとしましたが、うまくいきません。 私の考えた修正方法例 1、「検索フォーム」を作成し、「登録ID」を入力させる。 2、クエリを利用し「登録ID」で抽出する。 3、クエリで得た修正対象のデータを「修正フォーム」に表示させる。 しかしこの方法では、「修正フォーム」を”閉じる”事と”修正(上書き)”が同時になってしまいます。(「修正フォーム」を開いて、間違えた入力をしてしまった場合、後戻りができない。) どのような手順で登録したデータの修正を行えばよいのでしょうか?

  • Accessのフォームで

    Accessで2つほど質問いたします。 (1)テーブルにフィールドを追加したのですがフォーム上でそのフィールドが追加できません(プロパティで選択できない)、多分クエリーを経由してフォームを作成したのですが、どのクエリーだかわからなくなってしまいました、参照しているクエリーがどれなのかを調べる方法を教えてください。 (2)検索フォームを作成して入力した文字を含む検索をしたいのですが どのようにしたら良いのでしょうか、今は入力の文字列の最初と最後に「 * 」を入力して検索しています。

  • access クエリ 検索フォームの作り方

    よろしくお願いします。 やりたいこと: フォーム上で、テキストボックスに入力した値を検索して表示したい。 本やウェブで調べて、なんとか一度はやっと出来たのですが、 誤って何かを変更してしまい、使えなくなってしまいました。 今となってはどの資料を見て作れたのかわからなくなりました。 やったこと: クエリ :クエリA   条件にforms!フォームA!txt0を入力 フォーム:フォームA ヘッダーに非連結のテキストボックスtxt0を作成 txt0の更新後処理:docmd.requeryを入力 しかし、txt0に入力しても検索されません。 フォームのプロパティのレコードソース欄にクエリAを選択するようですが、 選択するクエリ名が表示されないので、クエリ名を入力しましたがダメでした。 どこか間違っているのでしょうか。VBAまでは勉強できないので上記範囲内でお願いします!

  • Accessの検索フォームで。

    Accessを使ってデータベースを作成しています。 「テーブル1」があり、これには 名前ID 名前 入力日 チェック項目1 チェック項目2   : とあります。 これをもとに「検索クエリ」を作成しました。 検索クエリの項目は「テーブル1」とまったく同じですが、 すべてを検索するわけではないので ・名前ID  「検索項目なし」 ・名前  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![名前]),[氏名],'*' & [Forms]![検索条件入力フォーム]![名前] & '*') ・入力日  「検索項目なし」 ・チェック項目1  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![チェック項目1]),[チェック項目1],[Forms]![検索条件入力フォーム]![チェック項目1])」 ・チェック項目2  ※上記と同じ。   : としてあります。 この「検索クエリ」をもとに「検索条件入力フォーム」を作成してあります。 名前の欄に「田中」と入力すれば、「田中」がつく人がすべて検索されるというようなカンジになっています。 「テーブル1」に空欄があり、その場合に、検索がうまくいきません。 「検索クエリ」のところですべてに条件を入れればいいのですが、フォームに全てが入っていないので。。。 やはりフォームに「テーブル1」の項目すべてを含め、クエリで条件を入れるべきでしょうか? これが今考えている中では一番手早いようなカンジがするのですが、どうしてもあまりスマートなやり方ではないような気がして。。。 これしかないのであれば、これでやりますが、他にいい方法があれば、教えていただけないでしょうか? あまり上手な文章ではないので、補足要求があれば補足します。 宜しくお願いします。 Ac2000です。

  • Access2007のフォームとクエリについて

    Access2007、OSはwindows7での開発です。 フォームのレコードソースに自分で作ったクエリを張り付けているのですが、 コードの中でクエリを変更し、その変更した内容がフォームに反映のされ方がおかしくて困っています。 前の画面で年月を入力し、ボタンをクリックすることで次の画面へ移行し、前の画面の年月でクエリを書き換えています。クエリは書き変わっていますし、クエリを書き換えた後にフォームをリクエリしています。しかし、フォームに反映されているデータは直前に入力した年月ではなく、その1つ前の年月のデータが出てきます。 流れとしましては、 年月入力画面で年月入力⇒作成ボタン押下で時間テーブルを見て、データが無ければ新しく作る。あればそのデータを表示というながれです。 説明下手なので理解しにくいかもございませんが、ご協力よろしくお願いします。

  • アクセス クエリー・フォーム作成について

    今アクセスで”台帳”なるものを作成しています。 クエリーで式等を入れ込んで、それを用いてフォームで入力画面を作成したのですが、テストデータはその場面で見れるものの新しいデータを入力する事が出来ません。 クエリー構造にどうやら問題があるみたいなのですが、色々試してみたものの答えが出ません。 基本的なクエリーの作成方法・想定されるミス等を教えてください。 お願いします。

  • アクセス2010 フォームとクエリーの関係

    アクセスのフォームがかえられてしまい。出力結果が変わりました。 修正したいのですが、フォームのどのプロパティ等を見れば、使用している、クエリーがわかるのですか。 教えてください。 よろしくお願いいたします。

  • ACCESS2003でクエリを使った検索フォームを作っています。

    ACCESS2003でクエリを使った検索フォームを作っています。 クエリは以下の様になっています。 ----------  番号   タイプ   品名  1111   AA     商品1  2222   AA     しょうひん2  3333   BB     商品しょうひん3 ---------- 品名のフィールドの抽出条件に ---------- Like "*" & [Forms]![品名検索フォーム]![品名検索] & "*" ---------- と入れています。 品名検索フォームは帳票タイプで、フォームヘッダーにテキストボックスを設け 「品名検索」と名前をつけています。 テキストボックスに【商品】と入力すれば番号1111と3333が、【しょうひん】と入力すれば 番号2222と3333が抽出されるように設定し、ここはうまく動きました。 ただ、このフォームを開いた際、テキストボックスは空欄になっているため、全レコードが 表示されてしまいます。テキストボックスが空欄の際は、何も表示したくないのですが どこを触ればいいのでしょうか? どうかよろしくお願いいたします。

  • Accessのクエリ

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

専門家に質問してみよう