- 締切済み
Access、検索用フォームでのあいまいな検索
現在、Accessでデータベース作成をしています。 テーブル: ・テーブルA ・テーブルB (A・B間にリレーションシップ設定) クエリ ・検索クエリ(テーブルA・テーブルBを元に作成) フォーム ・検索用フォーム(デザインビューでフォーム作成より) ・検索結果フォーム(検索クエリを元に作成) また、以下のような設定を入力しました。 「検索クエリ」の抽出欄 Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1) ※検索したい項目、すべての抽出欄に設定済 「検索用フォーム」 検索実行ボタンを作成し、マクロを設定 ・フォームを開く→「検索結果フォーム」 ・フィルタ→「検索クエリ」 上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。 ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも (1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。 2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか?? ご存知の方、ぜひ教えてください。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- CHRONOS_0
- ベストアンサー率54% (457/838)
>「Forms!検索用フォーム!検索したい名前」というタイトルの >メッセージボックスが出る これはそこに書いてあるものがAccessにとって不明なものだから 値の入力を要求してきているのです 検索用フォームは開いていますか? フォームやテキストボックスの名前は間違っていませんか? テーブルを結合したクエリであることとは全く関係ありません
- CHRONOS_0
- ベストアンサー率54% (457/838)
変な所はありませんよ >2つのテーブルを元にしたクエリからは、検索用フォームをつかった >複数のOR検索はできないのでしょうか?? OR検索ではなくANDでの検索ですから このたくさんの条件全てにあうものしか表示されません 該当するものがないだけでは
補足
>OR検索ではなくANDでの検索ですから >このたくさんの条件全てにあうものしか表示されません すみません。AND条件で問題ありませんでした。。。 テーブルAとB、両方から抽出しようとすると、以下のようになります。 テーブルBからの抽出項目に「Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"」と入力 ↓ 検索用フォームの検索実行ボタンを押す ↓ 「Forms!検索用フォーム!検索したい名前」というタイトルのメッセージボックスが出る ↓ 検索用フォームで入力した検索項目は無効化される といったカンジです。 ちなみに、メッセージボックスは、テーブルBから抽出しようとしている項目すべての分が順番に出てきます。 参考書等で調べているんですが、何が原因なのかがわからなくて困っています。 クエリ作成、又はフォーム作成の段階から、どこか間違えているのでしょうか??
- CHRONOS_0
- ベストアンサー率54% (457/838)
できますよ 差し支えなければ、検索クエリのSQLをここにアップしてください その方が言葉での説明よりよく分かります
補足
回答ありがとうございます。 検索クエリのSQLのパススルーを貼付します。 かなり長くなってしまいますが、よろしくお願いいたします。 SELECT MT_テーブルA.日付, MT_テーブルA.番号1, MT_テーブルA.担当者1, MT_テーブルA.都道府県, MT_テーブルA.送り先, MT_テーブルA.担当者2, MT_テーブルA.担当者3, MT_テーブルA.作業状態1, MT_テーブルA.作業状態2, ST_テーブルB.番号2, ST_テーブルB.機材1, ST_テーブルB.機材2, ST_テーブルB.機材3 FROM MT_テーブルA INNER JOIN ST_テーブルB ON MT_テーブルA.番号1 = ST_テーブルB.番号1 WHERE (((MT_テーブルA.番号1) Like "*" & [Forms]![F_検索フォーム]![番号1] & "*") AND ((MT_テーブルA.担当者) Like "*" & [Forms]![F_検索フォーム]![担当者] & "*") AND ((MT_テーブルA.都道府県) Like "*" & [Forms]![F_検索フォーム]![都道府県] & "*") AND ((MT_テーブルA.送り先) Like "*" & [Forms]![F_検索フォーム]![送り先] & "*") AND ((MT_テーブルA.担当者2) Like "*" & [Forms]![F_検索フォーム]![担当者2] & "*") AND ((MT_テーブルA.担当者3) Like "*" & [Forms]![F_検索フォーム]![担当者3] & "*") AND ((MT_テーブルA.作業状態1) Like "*" & [Forms]![F_検索フォーム]![作業状態1] & "*") AND ((MT_テーブルA.作業状態2) Like "*" & [Forms]![F_検索フォーム]![作業状態2] & "*") AND ((ST_テーブルB.番号2) Like "*" & [Forms]![F_検索フォーム]![番号2] & "*") AND ((ST_テーブルB.機材1) Like "*" & [Forms]![F_検索フォーム]![機材1] & "*") AND ((ST_テーブルB.機材2) Like "*" & [Forms]![F_検索フォーム]![機材2] & "* ") AND ((ST_テーブルB.機材3) Like "*" & [Forms]![F_検索フォーム]![機材3] & "*"));
お礼
もう一度最初から同じようなフォームを作成して、問題の切り分けをしてみたところ、 検索クエリ、検索用フォームに問題はなく、検索結果フォームの設定が間違っていたようでした。 検索クエリを元に検索結果フォームを作成したつもりでしたが、テーブルAが元になっていたらしく、 テーブルBの項目を受け付けてくれなかったようです。 レコードソースを変更することで、無事検索できるようになりました。 丁寧なご回答ありがとうございました。 ご迷惑をおかけいたしました。