プロが教えるわが家の防犯対策術!

現在、Accessでデータベース作成をしています。

テーブル:  ・テーブルA
         ・テーブルB
         (A・B間にリレーションシップ設定)

クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成)

フォーム   ・検索用フォーム(デザインビューでフォーム作成より)
         ・検索結果フォーム(検索クエリを元に作成)

また、以下のような設定を入力しました。

「検索クエリ」の抽出欄
 Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1)
 ※検索したい項目、すべての抽出欄に設定済

「検索用フォーム」
 検索実行ボタンを作成し、マクロを設定
 ・フォームを開く→「検索結果フォーム」
 ・フィルタ→「検索クエリ」

上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。
ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも
(1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。

2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか??

ご存知の方、ぜひ教えてください。
よろしくお願いいたします。

A 回答 (3件)

できますよ


差し支えなければ、検索クエリの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] & "*"));

補足日時:2006/11/25 20:05
    • good
    • 2

変な所はありませんよ



>2つのテーブルを元にしたクエリからは、検索用フォームをつかった
>複数のOR検索はできないのでしょうか??
OR検索ではなくANDでの検索ですから
このたくさんの条件全てにあうものしか表示されません
該当するものがないだけでは

この回答への補足

>OR検索ではなくANDでの検索ですから
>このたくさんの条件全てにあうものしか表示されません

すみません。AND条件で問題ありませんでした。。。

テーブルAとB、両方から抽出しようとすると、以下のようになります。

テーブルBからの抽出項目に「Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"」と入力
        ↓
検索用フォームの検索実行ボタンを押す
        ↓
「Forms!検索用フォーム!検索したい名前」というタイトルのメッセージボックスが出る
        ↓
検索用フォームで入力した検索項目は無効化される

といったカンジです。

ちなみに、メッセージボックスは、テーブルBから抽出しようとしている項目すべての分が順番に出てきます。

参考書等で調べているんですが、何が原因なのかがわからなくて困っています。
クエリ作成、又はフォーム作成の段階から、どこか間違えているのでしょうか??

補足日時:2006/11/25 23:16
    • good
    • 0

>「Forms!検索用フォーム!検索したい名前」というタイトルの


>メッセージボックスが出る
これはそこに書いてあるものがAccessにとって不明なものだから
値の入力を要求してきているのです

検索用フォームは開いていますか?
フォームやテキストボックスの名前は間違っていませんか?

テーブルを結合したクエリであることとは全く関係ありません
    • good
    • 0
この回答へのお礼

もう一度最初から同じようなフォームを作成して、問題の切り分けをしてみたところ、
検索クエリ、検索用フォームに問題はなく、検索結果フォームの設定が間違っていたようでした。

検索クエリを元に検索結果フォームを作成したつもりでしたが、テーブルAが元になっていたらしく、
テーブルBの項目を受け付けてくれなかったようです。
レコードソースを変更することで、無事検索できるようになりました。

丁寧なご回答ありがとうございました。
ご迷惑をおかけいたしました。

お礼日時:2006/11/26 12:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!