重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Access2000Proを使用しています。
メインフォームのテキストボックスを使って、指定のフィールド内に選択された言葉を含んだフォームを呼び出すコマンドを作ろうとしています。

その場合、
1)該当するQueryにはどのようなコードを書いたらよいでしょうか?例えば
Like "*" & [Forms]![MainForm]![NameSearch:] & "*"のようにすれば名前の一部でもあればそのフォームを引き出すことができると思いますが、これをやや複雑にして、(a)複数の言葉を指定して、その両方が含まれているもののみのフィールドを検索したり、或いは, (b)一方のみを検索 (c)大文字・小文字による区分けは可能か?は如何でしょうか?

2)対象フィールドはデータ型がテキスト型でもメモ型でもどちらでも検索可能でしょうか?両方共可能であるならば、その差(長短所)はどこにあるのでしょうか? メモ型でOKとなればかなり長い文章からも呼び込めることになりますが検索時間がかかると思われます。

3)一つの検索したい言葉に対し、複数のフィールドをその対象とする場合、はどのようにしたら良いでしょうか?

宜しくご教授下さい。

A 回答 (1件)

あくまでも通常の場合についての回答です。



1)
(a)
Select Field001, Field002, Field003
From Table001
Where
Field001 Like If(RTrim([Forms]![MainForm]![NameSearch]) = "", "%", "%" & RTrim([Forms]![MainForm]![NameSearch1]) & "%")
And
Field001 Like If(RTrim([Forms]![MainForm]![NameSearch]) = "", "%", "%" & RTrim([Forms]![MainForm]![NameSearch2]) & "%")
(b)
Select Field001, Field002, Field003
From Table001
Where
Field001 Like If(RTrim([Forms]![MainForm]![NameSearch]) = "", "%", "%" & RTrim([Forms]![MainForm]![NameSearch1]) & "%")
Or
Field001 Like If(RTrim([Forms]![MainForm]![NameSearch]) = "", "%", "%" & RTrim([Forms]![MainForm]![NameSearch2]) & "%")
(c)
大文字の場合、UCase関数、
小文字の場合、LCase関数が使えるはず。

2)
どちらも可能ですが、
どちらにしても遅くなります。
インデックスも意味ありませんし。

3)
1)の(b)のWhere句のNameSearchを同じにして、
Fieldを変えれば出来ませんか?

こんなのでいいのかどうかわからないので、
自信無しです。
    • good
    • 0

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