- 締切済み
ACCESS2000で検索値空白時の抽出
ACCESS2000で質問です。 顧客データベースがあります。 シリアルと登録名で検索をかけて、どちらかでヒット、又は両方ANDでヒットしたものをクエリで抽出したいです。以下の条件式はクエリの抽出条件の同じ行に入れています。データベースのうち、シリアルと登録名が両方入力されているものは問題なくヒットするのですが、どちらかが空欄のものがヒットしません。どちらかが空欄のものもヒットさせ、フォーム[検索]で何も入力しないでクエリを開いた時は全レコードを表示するようにしたいのですが、どのような式を書けばよいのでしょうか。宜しくお願いいたします。 Like "*" & [Forms]![検索].[登録者] & "*" Like "*" & [Forms]![検索].[シリアル] & "*"
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- O_cyan
- ベストアンサー率59% (745/1260)
クエリの抽出条件のフィールドが登録者・シリアルとした場合。 クエリの登録者のフィールドの抽出条件に IsNull([登録者]) Or Like "*" & [Forms]![検索].[登録者] & "*" クエリのシリアルのフィールドの抽出条件に IsNull([シリアル]) Or Like "*" & [Forms]![検索].[シリアル] & "*" と同じ行に抽出条件を書きます。 これで検索フォームのシリアルと登録者が未入力の場合全レコードが表示されます。 SQLだと SELECT テーブル名.* FROM テーブル名 WHERE ((([テーブル名].登録者)=IsNull([登録者]) Or ([テーブル名].登録者) Like "*" & [Forms]![検索].[登録者] & "*") AND (([テーブル名].シリアル)=IsNull([シリアル]) Or ([テーブル名].シリアル) Like "*" & [Forms]![検索].[シリアル] & "*")); これ出来ます。
- CHRONOS_0
- ベストアンサー率54% (457/838)
空欄も抽出するのですね Like "*" & [Forms]![検索].[登録者] & "*" or is null Like "*" & [Forms]![検索].[シリアル] & "*" or is null とします(or以下は行を変えずに同じ欄に書きます)
s_husky です。 後半の検証が不十分でした。 訂正しておきます。 SELECT Test.ID, Test.名前 FROM Test WHERE IIf(Len(Forms!フォーム1!テキスト1 & Forms!フォーム1!テキスト2 & "")>0,Test.ID=Forms!フォーム1!テキスト1 Or Test.名前 Like "*" & Forms!フォーム1!テキスト2 & "*",Test.ID>0 Or Test.ID Is Null); ただ、クエリを2つ用意した方がスッキリしますね!
s_husky です。 念の為の補足です。 Q、フォーム[検索]で何も入力しないでクエリを開いた時は全レコードを表示 A、回答No.1で基本的の答えていますが... Like "*" & [Forms]![検索].[登録者] & "*" は、 Like "**" となりますので、結果的に全レコードが検索されます。
SELECT Test.ID, Test.名前 FROM Test WHERE Test.ID=2 Or Test.名前 Like "*jiro*"; ・数字列は、算術演算子。 ・文字列は、パターン照合。 ・2つの条件を OR で結合する。 これで目的は達せられるかと思います。 ちなみに、先に示したSQL文は、クエリをSQLビューで表示したものです。