Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1294 / 2272 ツリー ←次へ | 前へ→

【7834】フォームのデータを元に検索 ののも 06/5/18(木) 17:15 質問[未読]
【7835】Re:フォームのデータを元に検索 shin 06/5/18(木) 20:03 発言[未読]
【7836】Re:フォームのデータを元に検索 ののも 06/5/19(金) 10:07 質問[未読]
【7840】Re:フォームのデータを元に検索 Shin 06/5/19(金) 16:56 発言[未読]
【7844】Re:フォームのデータを元に検索 ののも 06/5/22(月) 13:59 発言[未読]
【7846】Re:フォームのデータを元に検索 Shin 06/5/22(月) 16:29 発言[未読]
【7859】Re:フォームのデータを元に検索 ののも 06/5/24(水) 11:58 質問[未読]
【7860】Re:フォームのデータを元に検索 Shin 06/5/24(水) 12:57 発言[未読]
【7862】Re:フォームのデータを元に検索 ののも 06/5/24(水) 14:49 発言[未読]
【7861】Re:フォームのデータを元に検索 855 06/5/24(水) 13:08 発言[未読]
【7865】Re:フォームのデータを元に検索 Shin 06/5/24(水) 16:45 発言[未読]
【7866】Re:フォームのデータを元に検索 855 06/5/24(水) 17:52 発言[未読]
【7868】Re:フォームのデータを元に検索 ののも 06/5/25(木) 8:59 お礼[未読]

【7834】フォームのデータを元に検索
質問  ののも  - 06/5/18(木) 17:15 -

引用なし
パスワード
   こんにちは。
行き詰ってこの掲示板にたどりつきました。

現在、フォームに入力したデータを元に検索ができる仕組みを作っています。

<クエリ>
コード 社員名 備考

上記のフィールドがあるとします。
ただし、備考は入力データがあるのと無いレコードがあります。


抽出条件に
Like "*" & [Forms]![フォーム名]![条件フィールド名] & "*"

と備考に設定すると結果が出ません。
やはり入力データが無いレコードがあるから?でしょうか。

この場合の回避策はあるのでしょうか?
アドバイスお願いします。

【7835】Re:フォームのデータを元に検索
発言  shin  - 06/5/18(木) 20:03 -

引用なし
パスワード
   ▼ののも さん:
こんにちは。


>やはり入力データが無いレコードがあるから?でしょうか。

その通りですよ

素朴な疑問ですが、検索対象以外の物を表示する意味があるのでしょうか?

【7836】Re:フォームのデータを元に検索
質問  ののも  - 06/5/19(金) 10:07 -

引用なし
パスワード
   shin さん  こんにちは。


>>やはり入力データが無いレコードがあるから?でしょうか。
>
>その通りですよ
>素朴な疑問ですが、検索対象以外の物を表示する意味があるのでしょうか?


今のところ、デザインビューでクエリを開いて「備考」に対して抽出条件を
入れて検索をしているという状況です。

<クエリ>
コード 社員名 備考

とあって、「備考」には必要があればデータを入力しています。
入力するデータは全く任意です。

「備考」にデータが未入力のレコードと、既に入力済みのレコードが
混在していては、フォームからの検索実行が動きません。

クエリで直接検索はできるので、フォームからでもできるのでは?
という気がしたのですが・・・。

【7840】Re:フォームのデータを元に検索
発言  Shin  - 06/5/19(金) 16:56 -

引用なし
パスワード
   ▼ののも さん:
 こんにちは。

今読み返してみたのですが
>Like "*" & [Forms]![フォーム名]![条件フィールド名] & "*"
                     ’’’’’’’’’
「条件フィールド名」とはフォーム上のテキストボックスの名前ですよね?


 

【7844】Re:フォームのデータを元に検索
発言  ののも  - 06/5/22(月) 13:59 -

引用なし
パスワード
   こんにちは。
(書き込み遅くなって失礼しました)


>今読み返してみたのですが
>>Like "*" & [Forms]![フォーム名]![条件フィールド名] & "*"
>                     ’’’’’’’’’
>「条件フィールド名」とはフォーム上のテキストボックスの名前ですよね?
>

そうです。
フォーム上のテキストボックスです。
そこに入力したものを検索キーワードとして結果を出したいと考えています。

ヒント等あればよろしくお願いします。

【7846】Re:フォームのデータを元に検索
発言  Shin  - 06/5/22(月) 16:29 -

引用なし
パスワード
   こんにちは

フォーム上のテキストボックスに文字を入れ(入力されている文字と同じ)
フォーカスは移動させて下さい。
クエリ単体でオープンするとどの様になりなすか?

正常に表示又は?

【7859】Re:フォームのデータを元に検索
質問  ののも  - 06/5/24(水) 11:58 -

引用なし
パスワード
   こんにちは。
なかなかお伝えしにくくて申し訳ないです。
改めて、質問内容と確認できた事項をお知らせします。

フォームに入力したデータを元に検索ができる仕組みを作っています。


<クエリ>
コード 社員名 担当地区  備考
10   Aさん   X    車
20   Bさん   X    バス
30   Cさん   X
40   Dさん   X
50   Eさん   X

上記のフィールドがあるとします。

クエリのデザインビューの抽出条件にはこのように設定してあります。
Like "*" & [Forms]![フォーム名]![フォーム上のテキストボックス名] & "*"


検索用フォームの担当地区に「X」と入力し、クエリの検索結果を見ると
  10 Aさん X 車
  20 Bさん X バス 
の2件しか表示されませんでした。

検索用フォームに何も入力せず実行した結果は、
  10 Aさん X 車
  20 Bさん X バス 

ということで、すべてのデータが入力されていないと検索結果が正しく
表示されないようです。


ここで、フォームに設定した
Like "*" & [Forms]![フォーム名]![フォーム上のテキストボックス名] & "*"
のうち、備考欄のものを削除するとうまく動作し、5件表示されます。

やはり備考欄が未入力のデータもあるので、この方法では検索のしくみは
できないのでしょうか?

【7860】Re:フォームのデータを元に検索
発言  Shin  - 06/5/24(水) 12:57 -

引用なし
パスワード
   ><クエリ>
>コード 社員名 担当地区  備考
>10   Aさん   X    車
>20   Bさん   X    バス
>30   Cさん   X
>40   Dさん   X
>50   Eさん   X
>
>クエリのデザインビューの抽出条件にはこのように設定してあります。
>Like "*" & [Forms]![フォーム名]![フォーム上のテキストボックス名] & "*"

何欄の抽出条件ですか?文面からは地区ととれますが。

>検索用フォームの担当地区に「X」と入力し、クエリの検索結果を見ると
>  10 Aさん X 車
>  20 Bさん X バス 
>の2件しか表示されませんでした。

通常ならばAからEまでXが入力されているのですから
全て表示されると思いますが?


>ここで、フォームに設定した

このフォームに設定したとは何処にですか?

>Like "*" & [Forms]![フォーム名]![フォーム上のテキストボックス名] & "*"
>のうち、備考欄のものを削除するとうまく動作し、5件表示されます。

上記文面からでは「担当地区」であり「備考欄」との関係は?
それとも「担当地区」と「備考欄」の2重ですか?
条件は通常フォームの基となっているクエリの抽出条件欄のみですが。

【7861】Re:フォームのデータを元に検索
発言  855  - 06/5/24(水) 13:08 -

引用なし
パスワード
   試してみましたがちゃんと表示されましたよ。
クエリのSQLを確認してみてください。

うまくデータ取れたSQLです。

SELECT *
FROM Tテーブル
WHERE (((Tテーブル.担当地区) Like "*" & [Forms]![フォーム名]![フォーム上のテキストボックス名] & "*"))

【7862】Re:フォームのデータを元に検索
発言  ののも  - 06/5/24(水) 14:49 -

引用なし
パスワード
   何度も失礼します。
言葉足らずですみません。


>><クエリ>
>>コード 社員名 担当地区  備考
>>10   Aさん   X    車
>>20   Bさん   X    バス
>>30   Cさん   X
>>40   Dさん   X
>>50   Eさん   X
>>
>>クエリのデザインビューの抽出条件にはこのように設定してあります。
>>Like "*" & [Forms]![フォーム名]![フォーム上のテキストボックス名] & "*"
>
>何欄の抽出条件ですか?文面からは地区ととれますが。

すべての欄に抽出条件を入れてあります。
コード、氏名、担当、備考で検索を行いたいのです。
たとえば「担当地区」でXを抽出したい場合、以下のようになります。


>>検索用フォームの担当地区に「X」と入力し、クエリの検索結果を見ると
>>  10 Aさん X 車
>>  20 Bさん X バス 
>>の2件しか表示されませんでした。
>
>通常ならばAからEまでXが入力されているのですから
>全て表示されると思いますが?

のハズですが、備考欄が空欄だと表示されません・・・。


>>ここで、フォームに設定した
>
>このフォームに設定したとは何処にですか?

すみません、クエリです。
クエリのすべてのフィールドのコード、氏名、担当、備考のうち、
備考に設定した以下のLike〜を削除するとうまく動作します。

>>Like "*" & [Forms]![フォーム名]![フォーム上のテキストボックス名] & "*"
>>のうち、備考欄のものを削除するとうまく動作し、5件表示されます。
>
>上記文面からでは「担当地区」であり「備考欄」との関係は?
>それとも「担当地区」と「備考欄」の2重ですか?
>条件は通常フォームの基となっているクエリの抽出条件欄のみですが。

備考欄は必要があれば備忘記録として何か入力しておく項目として使っています。
運用方法は、コード「10」で検索したり、地区「X」で検索したり、
社員名で「田中」と検索したり、備考欄に対して「車」で検索したり・・・
という使い方です。

【7865】Re:フォームのデータを元に検索
発言  Shin  - 06/5/24(水) 16:45 -

引用なし
パスワード
   ▼855 さん:

こんにちは
勿論1つのフィールドのみならば可能ですが、
今回の場合、数個のフィールドに設定してあるようです。
私も確認しましたが、数個あり且つNULL値が有る場合うまく動作しないようです。

Access ヘルプに下記の様にあります。

ワイルドカード文字を使用して非 Null 値を返す

"*" (ANSI-89) または "%" (ANSI-92) などのワイルドカード文字を式に使用してフィールドのクエリ基準を定義すると、そのクエリで得られる結果には長さ 0 の文字列は含まれますが、Null 値は含まれません。

これ以上、私にはどの様にしたらよいのか解りません。
他の方のレスを待ってみて下さい。

【7866】Re:フォームのデータを元に検索
発言  855  - 06/5/24(水) 17:52 -

引用なし
パスワード
   検索時に毎回クエリを書き換えてもいいのなら可能だと思います。
ISNULLがNULLなら-1それ以外なら0を返すので、

select * from ( SELECT *, isnull(備考) as 備考チェック FROM Tテーブル ) b
WHERE (備考 Like "*" & [Forms]![フォーム名]![フォーム上のテキストボックス名] & "*" or 備考チェック = -1 )

このままだと[Forms]![フォーム名]![フォーム上のテキストボックス名]に値が入力されてもNULLのデータも入ってきてしまうのでクエリ発行時にIF文か何かで値があったら「備考チェック= -1」を省くでうまくいくのではないかと思います。

【7868】Re:フォームのデータを元に検索
お礼  ののも  - 06/5/25(木) 8:59 -

引用なし
パスワード
   Shinさん、855さん
いただいた案で試してみます。
繰り返しのご対応ほんと感謝しています。
ありがとうございました。

1294 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078226
(SS)C-BOARD v3.8 is Free