フォームでの検索方法について

このQ&Aのポイント
  • フォームでの検索方法を学びたい方へ!コンボボックスを使った検索について解説します。
  • 氏名を使ったレコード検索を実現する方法を紹介します。初心者でも簡単に設定できます。
  • 使いやすいフォームでのレコード検索方法をご紹介します。コンボボックスの連携についても解説します。
回答を見る
  • ベストアンサー

フォームでの検索

コンボボックスでの検索が出来なくて困っています。 テーブル:職員名簿   氏・名・職員No・生年月日・所属部署・・・etc. ↑のテーブルを元に入力フォームを作りました(単表形式)。 で、名簿の訂正や変更を行う時の為に検索でレコードを出したいです。 コンボボックス1:氏 コンボボックス2:名 を作って検索出来るようにしたのですが、氏・名 両方が当てはまるレコードを出したいのに、片方ずつの検索しか出来ません。 いろいろ調べてみて「コンボボックスの連携」というのをすると出来るようなのですが(?)、やり方がわかりません。 超初心者なので1から教えていただけるとうれしいです。 氏・名からの検索でレコードが出せれば良いのでもっと他に簡単に出来る方法があればそれでも良いです。 よろしくお願いします。

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

  • ベストアンサー
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.9

> グループ化、並べ替えはどのようにしたら良いですか? とりあえず・・・ > 検索用コンボボックス(氏)は、 > 名前:コンボ18 値集合ソース:SELECT T職員名簿.氏 FROM T職員名簿 GROUP BY T職員名簿.氏 ORDER BY T職員名簿.氏; > 検索用コンボボックス(名)は、 > 名前:コンボ20 値集合ソース:SELECT T職員名簿.名 FROM T職員名簿 GROUP BY T職員名簿.名 ORDER BY T職員名簿.名; として、 それぞれ、書式タブの列数「1」、書式タブの列幅「削除して空白」、書式タブのリスト幅「自動」としてください 現在の状態から、簡単に検索可能かの体験を行うなら、「データ」タブの「連結列」を「1」から「2」へ変更してみてください (前述の場合、列数1つしかないので2にした場合1に戻してね^^;)

pandai
質問者

お礼

Dxak様 で、で、出来ました~~~~(泣) うれしすぎる!!!! なが~い間、ほんとにホントにありがとうございました。

その他の回答 (8)

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.8

すみません、回答が途中ですね>< > 入力用コンボボックス(氏)は、 >  名前:Ctl氏 >  コントロールソース:氏 > 入力用コンボボックス(名)は、 >  名前:Ctl名 >  コントロールソース:名 > コントロールの名前を変更したら、モジュールも変えないといけない > ですか? えっと、このモジュールに関しては、変更しなくて良いです^^; > Set rs = Me.Recordset.Clone の中の「氏」「名」と (コンボボックスに使用しているコントロールソースと同一のもの) フォーム上のコントロールを区別して、レコードソースのフィールド名を故意に参照するために、名前を変えましたので^^; > rs.FindFirst usFind の部分で、検索するので問題は、無いはずだったんですが・・・動かないって話しだったんで、まさかと><

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.7

ごめんなさい、気が付くのが遅かったです>< > 「[氏]Like'75'」は見つかりませんでした。 の話しと、 > 値集合ソース:SELECT T職員名簿.職員NO, T職員名簿.氏 FROM T職員名簿; > 値集合ソース:SELECT T職員名簿.職員NO, T職員名簿.名 FROM T職員名簿; で、検索できない理由が理解できました^^; コンボボックス上に表示されているデータは、「氏」「名」なのですが、実際入ってるデータは「職員NO」を格納してあります で、如何直そうか?考えるのですが・・・ いろいろパターンがあります 一番、良いのは、集合ソースの「職員NO」を削除して、「氏」「名」でグループ化、並べ替えと言うのが良さそうですが・・・

pandai
質問者

補足

Dxak様 >一番、良いのは、集合ソースの「職員NO」を削除して、「氏」「名」でグループ化、並べ替えと言うのが良さそうですが・・・ グループ化、並べ替えはどのようにしたら良いですか?

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.6

多分、モジュール以外のところの問題を考えないと駄目みたいですね;; > 一致するレコードを発見できなかった場合の条件をつけると、実際に > あるレコードの氏名を入力しても「発見できなかった」となってしま > います。 メッセージを出しているという事は、モジュールの部分は動いているみたいですね^^; これは、「氏」「名」を両方検索した場合、検索できなかったという事でしょうか?「氏」「名」の片方を検索した場合、検索できますか? > 'コントロールの値と一致するレコードを検索する > ↑このあたりの条件を抜くと検索用コンボボックスと入力用画面と > が連動していないような感じをうけるのですが、気のせいでしょう > か? 「連動」と言うのが、どういうことなのでしょうか? 入力用画面(フォーム)と検索用画面(フォーム)が別ってことでしょうか? フォームを別にしてあるのであれば、 > Set rs = Me.Recordset.Clone > Me.Bookmark = rs.Bookmark を Set rs = Froms("入力用フォームの名前").Recordset.Clone Froms("入力用フォームの名前").Bookmark = rs.Bookmark に変更してみてください (片方づつなら、検索可能であったのであれば、違うとは思うのですが) 検索用コンボボックスと入力用テキストボックスは別のものを使用してください 検索用コンボボックスは「コントロールソース」を設定せず(非連結コンボボックス)に、「値集合ソース」は設定してください 検索用コンボボックスを変えると、入力用テキストが変更されるようだと、レコードセットと連動されてるので、テーブルの内容が変ってしまうのですが・・・ で、確証はないのですが・・・ > 使用しているAccessは2000です。 の場合、フォーム上のコントロールの名前に「Ctl」を付けて、レコードセットのフィールドの名前と、フォームのコントロールの名前を違う名前で、設定してもらえますか? 私の 「Ctl」コントロールの場合の名前の先頭、 「Fld」フィールドの場合の名前の先頭、 「Tbl」テーブルの名前の先頭、 等の名前の付け方の癖は、Acc2000の時の漢字で始まる名前の場合、挙動が思うように動かないことがあると言うことがあったり、フィールド名とコントロール名が同一のものを使用していると、参照が思うように行っていなかったことがあったために付いた癖で、そのときの名残で現在も、そうしてあるだけなんですが・・・ あと、 > 氏のフィールド名=氏 > 名のフィールド名=名 は、テキスト型で良いのですよね^^;

pandai
質問者

補足

Dxak様 できません・・・(泣)。こんなに親切に教えていただいているのに・・・。何か根本的に私のやり方が間違っているのでしょうか(>_<)? >「氏」「名」を両方検索した場合、検索できなかったという事でしょうか?「氏」「名」の片方を検索した場合、検索できますか? 片方を検索した場合にも検索できません。 例えば職員NO.75 のスズキを検索用コンボボックスに入力すると下記のようなコメントが出ます。 「[氏]Like'75'」は見つかりませんでした。 >入力用画面(フォーム)と検索用画面(フォーム)が別ってことでしょうか? 入力用フォームのフォームヘッダーに検索用コンボボックスを作っています。 >検索用コンボボックスと入力用テキストボックスは別のものを使用してください 別のものを使用しています。 検索用コンボボックス(氏)は、  名前:コンボ18  コントロールソース:設定していません。  値集合ソース:SELECT T職員名簿.職員NO, T職員名簿.氏 FROM T職員名簿; 検索用コンボボックス(名)は、  名前:コンボ20  コントロールソース:設定していません。  値集合ソース:SELECT T職員名簿.職員NO, T職員名簿.名 FROM T職員名簿; >フォーム上のコントロールの名前に「Ctl」を付けて、レコードセットのフィールドの名前と、フォームのコントロールの名前を違う名前で、設定してもらえますか? 「フォーム上のコントロールの名前」は入力用コンボボックスの名前のことですよね? 入力用コンボボックス(氏)は、  名前:Ctl氏  コントロールソース:氏 入力用コンボボックス(名)は、  名前:Ctl名  コントロールソース:名 コントロールの名前を変更したら、モジュールも変えないといけないですか? > 氏のフィールド名=氏 > 名のフィールド名=名 は、テキスト型で良いのですよね^^; はい、テキスト型です。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.5

基本的な所で私の勘違いなのでしょうか^^; 「=」を「Like」に変更 発見できなかった場合の条件表示 Option Compare Database Private Sub コンボ18_AfterUpdate() usRecFind End Sub Private Sub コンボ20_AfterUpdate() usRecFind End Sub Private Sub usRecFind() Dim rs As Object Dim usFind As String usFind = "" ' 氏の検索条件追加 If Not IsNull(Me![コンボ18]) Then usFind = "[氏] Like '" & Me![コンボ18] & "'" End If ' 名の検索条件追加? If Not IsNull(Me![コンボ20]) Then usFind = IIf(usFind = "", "", usFind & " And ") & _ "[名] Like '" & Me![コンボ20] & "'" End If ' 検索開始 If usFind <> "" Then Set rs = Me.Recordset.Clone rs.FindFirst usFind If rs.NoMatch Then MsgBox "「" & usFind & "」は見つかりませんでした。", vbOKOnly Else Me.Bookmark = rs.Bookmark End If End If End Sub で、動作確認したのですが・・・ 「=」を「Like」に変更を変更しなくても動くのですが、「?」「*」等を使うと検索しないみたいなので「Like」に変更 で、後、気になったのが、変更後違うコントロールにカーソルを移動させてますか? 検索を開始する条件が「AfterUpdate」なので、入力後、カーソルの移動をさせないと、検索を開始しませんが・・・ あと、Accのバージョンいくつになります?

pandai
質問者

補足

Dxak様 =をLikeに変更しましたが、やはり変わりません。 >変更後違うコントロールにカーソルを移動させてますか? というのは検索用コンボボックスに検索したい名前を入力後カーソルを移動させているか?ということですよね?・・でしたら、カーソルは移動させています。 一致するレコードを発見できなかった場合の条件をつけると、実際にあるレコードの氏名を入力しても「発見できなかった」となってしまいます。 最初にあった 'コントロールの値と一致するレコードを検索する ↑このあたりの条件を抜くと検索用コンボボックスと入力用画面とが連動していないような感じをうけるのですが、気のせいでしょうか? 使用しているAccessは2000です。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.4

>> rs.FindFirst "[職員NO] = " & Str(Nz(Me![コンボ18], 0)) >> ・・・ >> rs.FindFirst "[職員NO] = " & Str(Nz(Me![コンボ20], 0)) と、あったので最初は[職員NO]の検索コントロールを作成してあって、訂正未済で、記載してあると判断して条件に追加したのですが・・・ > 職員NOのコントロール名はどこを見ればわかるのでしょうか? 検索条件を設定するコンボボックスか?テキストボックスか?のコントロールの名前のことです 検索条件を設定するコントロール(テキストボックス、コンボボックス等)をクリックして、逆クリック-プロパティで、コントロールに関してのプロパティが出てきます そこに、「名前」と言うプロパティが存在しますので、それが「コントロール名」になります > ' 職員Noの検索条件追加 > If Not IsNull(Me![職員NO]) Then > usFind = "[職員NO] = " & Str(Me![職員NO]) > End If この部分は、職員NOを検索条件にする場合に設定しているだけで、すべて削除しても、氏、名の検索は、行います とりあえずは、'を頭につけて、動作するか?確認してみてください 条件として考える場合は、また考えましょう^^; 上記例は、[職員NO]が数値を取り扱う時の例ですので、[職員NO]を文字で設定してある場合 > usFind = "[職員NO] = " & Str(Me![職員NO]) を usFind = "[職員NO] = '" & Str(Me![職員NO]) & "'" 等に変更して記述ください

pandai
質問者

補足

Dxak様 職員NOは検索条件に設定していません。 ので、 > ' 職員Noの検索条件追加 > If Not IsNull(Me![職員NO]) Then > usFind = "[職員NO] = " & Str(Me![職員NO]) > End If 部分は削除しました。 が、やはり検索はできません・・・。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.3

> rs.FindFirst "[職員NO] = " & Str(Nz(Me![コンボ18], 0)) > ・・・ > rs.FindFirst "[職員NO] = " & Str(Nz(Me![コンボ20], 0)) この2箇所ですね。検索の条件設定しているの・・・ 検索のためのモジュールをまとめて・・・ Private Sub コンボ18_AfterUpdate() usRecFind End Sub Private Sub コンボ20_AfterUpdate() usRecFind End Sub Private Sub usRecFind() Dim rs As Object Dim usFind As String usFind = "" ' 職員Noの検索条件追加? If Not IsNull(Me![職員NOのコントロール名?]) Then usFind = "[職員NO] = " & Str(Me![職員NOのコントロール名?]) EndIF ' 氏の検索条件追加? If Not IsNull(Me![コンボ18]) Then usFind = IIf(usFind = "","",usFind & " And ") & _ "[氏のフィールド名?] = '" & Me![コンボ18] & "'" EndIF ' 名の検索条件追加? If Not IsNull(Me![コンボ20]) Then usFind = IIf(usFind = "","",usFind & " And ") & _ "[名のフィールド名?] = '" & Me![コンボ20] & "'" EndIF ' 検索開始 IF usFind <> "" Then Set rs = Me.Recordset.Clone rs.FindFirst usFind If Not rs.EOF Then Me.Bookmark = rs.Bookmark EndIf End Sub で、モジュールの動作確認してませんが・・・ [~?]で記述しているところは、それぞれの名前に記述しなおしてみてくださいね

pandai
質問者

補足

Dxak様、度々すいません。 以下のようにしたのですが、検索できません。 何か間違ってますか? ちなみに 氏のフィールド名=氏 名のフィールド名=名 です。 職員NOのコントロール名はどこを見ればわかるのでしょうか? Option Compare Database Private Sub コンボ18_AfterUpdate() usRecFind End Sub Private Sub コンボ20_AfterUpdate() usRecFind End Sub Private Sub usRecFind() Dim rs As Object Dim usFind As String usFind = "" ' 職員Noの検索条件追加 If Not IsNull(Me![職員NO]) Then usFind = "[職員NO] = " & Str(Me![職員NO]) End If ' 氏の検索条件追加 If Not IsNull(Me![コンボ18]) Then usFind = IIf(usFind = "", "", usFind & " And ") & _ "[氏] = '" & Me![コンボ18] & "'" End If ' 名の検索条件追加? If Not IsNull(Me![コンボ20]) Then usFind = IIf(usFind = "", "", usFind & " And ") & _ "[名] = '" & Me![コンボ20] & "'" End If ' 検索開始 If usFind <> "" Then Set rs = Me.Recordset.Clone rs.FindFirst usFind If Not rs.EOF Then Me.Bookmark = rs.Bookmark End If End Sub 何度もすいませんが回答よろしくお願いします。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

「コンボボックスの連携」と言うのは、抽出条件の設定を簡素化するためのユーザインターフェイスの話で、抽出するほうの話とは、おそらく別物です 例えばで、抽出したい条件を整理していきましょう 名前が混同すると、判らなくなるので、 テーブルの氏、名を、Fld氏、Fld名として 抽出条件になっているコンボボックスの氏、名を、Ctl氏_条件、Ctl名_条件として、整理していきます ・「Ctl氏_条件」、「Ctl名_条件」が両方とも設定されている場合  「Fld氏 = Ctl氏_条件」かつ「Fld名 = Ctl名_条件」の物を抽出 ・「Ctl氏_条件」、「Ctl名_条件」が両方とも空白の場合  すべてのレコードを表示 ・「Ctl氏_条件」だけ設定されているの場合  「Fld氏 = Ctl氏_条件」の物を抽出 ・「Ctl名_条件」だけ設定されているの場合  「Fld名 = Ctl名_条件」の物を抽出 と、条件を設定していき、これを、Accessの条件として書き直すと ・[Fld氏] = Forms![フォーム名]![Ctl氏_条件] And [Fld名] = Forms![フォーム名]![Ctl名_条件] ・[Fld氏] = Forms![フォーム名]![Ctl氏_条件] And IsNull(Forms![フォーム名]![Ctl名_条件]) ・IsNull(Forms![フォーム名]![Ctl氏_条件]) And [Fld名] = Forms![フォーム名]![Ctl名_条件] ・IsNull(Forms![フォーム名]![Ctl氏_条件]) And IsNull(Forms![フォーム名]![Ctl名_条件]) と、なりSQL文にする場合 Where ~ ;の間に、 [Fld氏] = Forms![フォーム名]![Ctl氏_条件] And [Fld名] = Forms![フォーム名]![Ctl名_条件] Or [Fld氏] = Forms![フォーム名]![Ctl氏_条件] And IsNull(Forms![フォーム名]![Ctl名_条件]) Or IsNull(Forms![フォーム名]![Ctl氏_条件]) And [Fld名] = Forms![フォーム名]![Ctl名_条件] Or IsNull(Forms![フォーム名]![Ctl氏_条件]) And IsNull(Forms![フォーム名]![Ctl名_条件]) を追加 フィルターで行う場合も、そのまま上記条件の内容を書き込めば、条件として、設立してきます ただし、Fld氏、Fld名に空白のデータが存在するとか別途、条件が発生する場合、もう少し条件を変更していかなくてはなりません

pandai
質問者

補足

Dxak様、回答ありがとうございます。 が、私には高度すぎて・・・? 以下のところを変えればいいのでしょうか? Option Compare Database Private Sub コンボ18_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[職員NO] = " & Str(Nz(Me![コンボ18], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ20_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[職員NO] = " & Str(Nz(Me![コンボ20], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub

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

> コンボボックス1:氏 > コンボボックス2:名 > を作って検索出来るようにしたのですが、氏・名 両方が当てはまるレコードを出したいのに、片方ずつの検索しか出来ません。 どうやって抽出をしているんですか? クエリを使っているのなら、抽出条件欄の同じ行に入れてやれば、大丈夫だと思いますけど? (Or 条件ではなく、And 条件)

pandai
質問者

補足

Gin_F様、回答ありがとうございます。 クエリは使用しておりません。 フォームヘッダーにコンボボックスを作り 「コンボボックスで選択した値に対応するレコードをフォームで検索する」 として、テーブルの氏を選択しています。 同様に名も作りました。

関連するQ&A

  • Access フォームのコンボボックスでの検索

    Access2010で質問です。 フォーム上のコンボボックスで レコードを検索・抽出したいと考えています。 以下のような事をやりたい場合、 フォームやVBAをどのように 作ればよろしいのでしょうか? お忙しいところたいへん恐れ入りますが、 ご教授いただけますと助かります。 ======テーブルの説明===== 以下の3つのテーブルがあります。 ◆メインテーブル |No|職業 |住所|年齢|名前| -------------------------- |01|会社員|東京| 31|品川| |02|自営業|埼玉| 30|川口| |03|会社員|東京| 30|渋谷| |04|自営業|埼玉| 20|戸田| |05|自営業|埼玉| 20|熊谷| |06|自営業|東京| 30|太田| ◆職業テーブル |No|職名 | ----------- |01|自営業| |02|会社員| |03|無職 | ◆住所テーブル |No|地名| --------- |01|東京| |02|埼玉| |03|千葉| そして、各テーブルは 以下のようにリレーションされています。 ・職業テーブルはメインテーブルの「職業」へリレーション ・住所テーブルはメインテーブルの「住所」へリレーション =====検索方法の説明===== 検索はフォーム上で行いたいです。 フォームに以下のようなコンボボックスを2つ作成します。  コンボボックス1・・・職業が選べます  コンボボックス2・・・住所が選べます それぞれのコンボボックスで条件を選んだ後、 「実行」ボタンを押すことで検索結果を表示させたいです。 ◆両方のコンボボックスが空欄だった場合 「検索条件を選んでください」との メッセージボックスを表示させたいです。 ◆複数のレコードが抽出された場合にやりたい事 各レコードの「年齢」を比較して 値が一番小さいレコードだけが 抽出されるようにしたいです。 「年齢」が同じ値だった場合(競合した場合)は 「No」の値が小さいレコードを抽出したいです。 ◆検索結果の表示方法 抽出されたレコードの「名前」だけを フォームに表示したいです。 =====検索結果の例(やりたい事)===== ◆事例1 コンボボックス1=「会社員」 コンボボックス2=「東京」 検索結果=「渋谷」 01と03が検索にヒットしますが 「年齢」の値が小さい方(03)だけを 抽出されるようにしたいです。 ◆事例2 コンボボックス=「自営業」 コンボボックス=「埼玉」 検索結果=「戸田」 まず02と04と05が検索にヒットしますが 02の「年齢」の値が大きいので除外します。 次に04と05の「年齢」の比較ですが、 同じ値になっています。 したがって「No」の値が小さい04が 抽出されるようにしたいです。 ==================== 以上です。 できるだけ詳細に書いたつもりですが、 不足な情報がありましたらご指摘ください。 なにとぞよろしくお願いいたします。

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

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

  • レコードの値を取得

    お尋ねします。 職員台帳をアクセス2000で作成しています。 検索フォームを作って、部署名をコンボボックスで選択すると、その部署に所属する職員の一覧を表形式で表示するようにしました。 表示するフィールドは、部署名、職員氏名、職員番号、入社年月日です。 次に、表形式で抽出されたそれぞれのレコードについて、コマンドボタンを押して別のフォームを開き、そのフォームで個別の情報を入力したいと考えます。各レコードそれぞれにコマンドボタンを配置する方法です。 別のフォームを開くときに、各レコード(テキストボックス)に表示されている職員氏名と職員番号の「値」を取得したいのですが、その方法がわかりません。表形式のレコードのValueを取得する方法をVBAでどう記述すればいいか、どなたか教えてください。 よろしくお願いいたします。

  • 年月日を持つテーブルから年月を指定して抽出したいのですが

    ACCESSをつかっています。 年月日、氏名、その他のレコードを持つテーブルがあります。 フォーム、レコードで検索条件のコンボボックスがあるとします。 条件で、2002年4月を選ぶと、2002/04/01~2002/04/30 までのデータを出せるようにしたいのです。 他の質問にあるあいまい検索等を参考にしましたが、コンボボックス と、テーブル、フォームの関係が頭の中でごちゃごちゃになって つながりません。最終的にはフォームの上部にコンボボックスがあり、 下部(サブフォームでしょうか)に抽出されたデータがでればと 思っています。なにぶん初心者なもので質問自体もわかりにくいと 思いますがよろしくお願いします。

  • コンボボックスの2段階絞込み

    お世話になります。 アクセス2010を使っています。 (1)テーブル:従業員マスタ (フィールド名:『ID(オートナンバー)』『所属部署』『役職』『生年月日』『氏名』『入社年月日』 (2)テーブル:所属部署マスタ(フィールド名:『ID(オートナンバー)』『部署名』『住所』『電話番号』 とがあり、フォーム上でコンボボックスで、2段階絞込みというのをやってみたいと思っています。 1つ目のコンボボックスで、所属部署を選択し、選択した部署に所属する従業員を2つ目のコンボボックスに表示されるようにしたいのですが、うまくいきません。 なにとぞご教授お願いします。 何分初心者の為、説明内容が足りない場合はご指摘ください。

  • テキストボックスとコンボボックス

    こんにちは、Accessのフォームにテキストボックスとコンボボックスを設置して、以下のような事ができないかと悩んでおります。 フォーム内には、テキストボックスとコンボボックスが設置してありまして、コンボボックス内にDB(会社名テーブル)から取得した全ての会社名が入っています。 しかし、そのレコード数が300件近くあるため、コンボボックス内から探し出すのに手間が掛かります。 そこで、コンボボックスの隣にテキストボックスを設置し、テキストボックス更新後に会社名テーブルの検索を行い、条件に合った会社名だけをコンボボックス内に入れることを考えているのですが、上手く行きません。 動作のイメージとしては下記のようになります。 (1)初期表示時はテキストボックス内に何も入力されていないので、全レコードがコンボボックス内に表示される。 (2)テキストボックスに「有限」と入力して、テキストボックスからフォーカスを移動させると、コンボボックス内に「有限」が会社名に含まれているレコードのみが入っている。 (3)テキストボックスを空白に戻すと、コンボボックス内には全レコードが表示 以上、どなたかご教授よろしくお願いします。

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

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

  • コンボボックス検索で複数データを検索できない

    「現状の困りごと」 コンボボックスで該当するデータを全て検索したいのですが、検索先の「キー(文言)」が複数レコードで存在する場合、最初に検索「表示レコード」したデータ以外は検索できなくて困っています。 「やりたいこと」 コンボボックス検索で検索先の「キー(文言)」に複数のレコードが存在しても検索できる様にしたい。 「実施している設定内容」 1,検索元のコンボボックス名「国地域検索」と設定内容 (1)設定1,データの値集合ソースに「国地域を選択」  ・SELECT DISTINCT 外国人情報テーブル.国地域 FROM 外国人情報テーブル;  ・外国人情報テーブルのフィールド構成:ID、国地域、分類、情報 (2)設定2,「イベント」更新後処理欄のマクロ記述  ・アクション:コントロールの移動=「国地域」  ・レコードの検索=「=[国地域検索]」  ・検索方向=すべてのレコード  ・他は全てデフォルト 2,検索元のコンボボックス名「国地域検索」と検索ボタンの設定内容 (1)設定1,次のデータへ移動する「↓ボタン」と「ボタン↑」のマクロ設定  ・アクション:コントロールの移動=「国地域」  ・レコードの検索=「=[国地域検索]」  ・検索方向=「↓ボタン」=「下へ」、「ボタン↑」=「上へ」  ・他は全てデフォルト 今迄は文言フィールドを検索キーとしていた事もあり、検索先の「キー(文言)」が複数存在するケースが殆ど無かったので、こうした事象に気が付きませんでした。以上ですが宜しくお願いします。

  • フォームのプロパティを設定したい(Access2000)

    Access2000 XPです。 都道府県名が1レコードに1つずつ入っているテーブルと 各都道府県名のテーブルが47コあります。 新規でフォームを作成し(フォームのレコードソースはまだ未設定) コンボボックスを1つ置いて、値集合ソースに都道府県テーブルを設定し コンボボックスで選ばれた都道府県にフォームのレコードソースを変更しようと思っています。 Me.RecordSource=コンボボックス.text 単純にこれで良いと思うのですがエラー(入力された値は、フィールド又はコントロールで定義されている入力規則に従っていません)が出て全然更新されません。 どなたか分かる方、解決法をお願いします。。。

  • アクセスである文字を含む検索

    ACCESS2000を使っています。 あるデータテーブル「発注書テーブル」があって、ここでは「(1)ID」「(2)顧客名(法人)」「(3)発注商品」「(4)納品済チェック」の4つフィールドがあるとします。 作業はフォームで行います。フォーム名は「発注書フォーム」。 「(2)顧客名」から検索をかけたくて、検索コマンドボタンをつくり、「検索フォーム」を発注書フォームとまったく同じ形態でつくり、そこにとべるようにしました。 「検索フォーム」には「検索」というテキストボックスを作ります。 「検索クエリ」というクエリを作り、発注書テーブルを素とし、すべてをデザインビューで表示するようにしました。 そして、「(2)顧客名」の抽出条件に[Forms]![検索フォーム]![検索]を入力します。 すると、「検索フォーム」の「検索」をコンボボックスにして、顧客名をすべて表示させ選択した場合は、「検索フォーム」では、選択した顧客の情報が表示されるようになりました。 が、しかし、「検索」をコンボボックスではなく、テキストボックスで、しかも顧客名の一部だけを入力したら、その文字を含むすべてのレコードを表示してほしいのです。 そこで、「検索クエリ」の「(2)顧客名」抽出条件にlike"*[Forms]![検索フォーム]![検索]*"と入力してみました。 そして「検索フォーム」の「検索」テキストボックス(非連結)に顧客名の一部を入力したところ、ぜんぜん絞りこみ抽出してくれません。 もちろん、クエリ上でも絞り込んでいない模様です。 どうしたら文字の一部からその文字を含む顧客名のレコードを全て抽出し、表示させることができるでしょうか? 細かくてすみませんが、かなり困ってます。 どうかわかる方、教えてください。 まったくちがう方法(別の手法)でもかまいません。 この説明でわからない部分がありましたら補足しますのできいてください。 よろしくお願いします。

専門家に質問してみよう