![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
またまたAccessについての質問です。
検索フォームというのを作りました。
テーブルのデータから条件に合うものだけを抽出したいのです。
たとえば1つ目の検索フォーム[A]のテキストボックスに「AAA」を入力します。
そのあとBには「BBB」と入力します。
同じくCには「CCC」と入力します。
そして絞込みボタンを押したらAAAでBBBでCCCのものが抽出されます。
これはうまくいきました。
とりあえず、複数条件なので、わけもわからず「&」で結んでしまいました・・・。
↓は絞込みボタンのクリック時です。↓
困ったのは、すべて検索条件を指定しない場合です。
たとえば「AAA」で「CCC」のものを抽出したいとき、[A]のテキストボックスに「AAA」と入れ
[C]のテキストボックスに「CCC」と入れます。
そして絞込みボタンをクリック。
するとBが未記入だからか、抽出されたのは真っ白でした・・・。
Option Compare Database
Private Sub コマンド50_Click()
Me.Filter = "契約='" & Me!テキスト51 & "'and A='" & Me!テキスト57 & "'"
Me.FilterOn = True
End Sub
組み合わせが自由になる検索フォームにするにはどうすればよいのでしょうか?
誰か助けてくださ~い!
No.6ベストアンサー
- 回答日時:
>ところが、「A」と「B」というような「契約」が入ってない条件で抽出すると・・・真っ白になりました。
なぜなのでしょうか???
「契約」の入力の有無にかかわらず、抽出条件に指定されているためです。
ここの部分です。
sFilter = "契約='" & Me!テキスト51 & "'"
入力がないときに抽出条件から外したいのなら、
sFilter = ""
IF IsNull(Me!テキスト51) = False Then
sFilter = "契約='" & Me!テキスト51 & "'"
End IF
としなければなりません。
ただ、これだと「契約」が未入力のとき、sFilterの内容は、
「and A='xxxxx' and B='yyyyy'」
のように、「and」から始まってしまいます。
これではエラーになります。
対策として、ダミーの条件をいれましょう。
つまり、
sFilter = "1=1"
IF IsNull(Me!テキスト51) = False Then
sFilter = "and 契約='" & Me!テキスト51 & "'"
End IF
というようにします。
こうすると、sFilterの内容は、
「1=1 and 契約='qqqqq' and A='xxxxx' and B='yyyyy'」
もしくは
「1=1 and A='xxxxx' and B='yyyyy'」
のようになります。
できるだけ仕組みを覚えてくださいね。
そうしないと、直すことができないですよ。
ありがとうございます。
がんばってやってみます。
いろいろ本を読んだりしたのですがいまいち分からなくて・・。
何かオススメの本があったらまた教えてください。
ほんとにありがとうございました。
No.5
- 回答日時:
#3です。
>(初心者なもので、基本的な質問ですみません)
なるほど。。。
少し、解説しておきます。
●意味がわかれば簡単です
・「Me」は自分のフォームを指しています。
・「Me.A」とすると「このフォームの中にあるAという名前のコントロール」となります。
・「If IsNull(Me.A) = True Then」は、「Aというコントロールに入力がなかったら」となります。
(「End If」まで実行されます)
●テキストボックスの名前は関係あります。
修正・変更などのように、後で見るときのために、適切な名前に変えておくといいでしょう。
今の状態だと、
If IsNull(Me.A) = True Then
sFilter = sFilter & " and A='" & Me.A & "'"
End IF
は、
If IsNull(Me.テキスト57) = True Then
sFilter = sFilter & " and A='" & Me.テキスト57 & "'"
End IF
のようになります。
(上のコードは、全角スペースを入れたので、コピペできません)
*回答したときには、名前に気が付かなかったので、申し訳ないです。
そのまま貼り付けただけだと、「コントロールがありません」とかいうエラーが
でそうな気がしますけど。。。何故?
わからない箇所があれば、また聞いてください。
この回答への補足
お久しぶりですみません。
あれからやってみたのですが、90%はできました!!
「契約」と「A」の組み合わせとか、「契約」と「B」の組み合わせとか、「契約と「A」と「C」の組み合わせでうまく抽出できました。
ところが、「A」と「B」というような「契約」が入ってない条件で抽出すると・・・真っ白になりました。
なぜなのでしょうか???
またよろしくお願いします。
何度も何度もご親切にありがとうございます!
今から仕事に行ってやってみます!
また夜に報告します。
ありがとうございました(^-^)
No.4
- 回答日時:
#3です。
そうですね。同じようにすればOKです。
(全く同じではでないですけど)
次のような感じになります。
'テキストボックスC
If IsNull(Me.C) = False Then
sFilter = sFilter & " and C='" & Me.C & "'"
End IF
の後ろに次のコードを追加します。
'テキストボックス(開始日付)
If IsNull(Me.txStartDate) = False Then
sFilter = sFilter & " and " & Me.txStartDate & "<=date"
End IF
'テキストボックス(終了日付)
If IsNull(Me.txEndDate) = False Then
sFilter = sFilter & " and date<=" & Me.txEndDate
End IF
ただし、
・txStartDateは開始日付のテキストボックス
・txEndDateは終了日付のテキストボックス
・dateはテーブルの日付フィールド名
・日付のフィールドが、どのように定義されているか不明なので、
上記のコードのままではうまくいかない可能性はあります。
その場合、日付フィールの型に合わせた記述をする必要があります。
を表しています。
また、開始日付と終了日付は一方のみの入力で動作します。
この回答への補足
またまたありがとうございます!
昨夜から帰ってやってみたのですが、いろいろ触ったからでしょうか?うまく出来ていた検索ができなくなってしまいまいした・・・(;;)
「契約」のところはうまく絞り込んでくれるのですが、「A」のボックスのみに入力して絞り込みをしたら
真っ白になってしまいました~・・・。「B」も「C」も同じく絞り込めません。
「契約」に入れて、「A」(またはB/C)に入れて、ふたつ絞り込み条件を入れると「契約」の中の「A」が表示されるはずなのに、「契約」のみが絞り込まれます。
テキストボックスの名前とか関係あるんですか?
(初心者なもので、基本的な質問ですみません)
いろいろ書き直したので、前回「回答!」に書いて下さってたのをそのままコピーして貼り付けました。
Private Sub コマンド50_Click()
Dim sFilter As String
sFilter = "契約='" & Me!テキスト51 & "'"
'テキストボックスA
If IsNull(Me.A) = True Then
sFilter = sFilter & " and A='" & Me.A & "'"
End IF
'テキストボックスB
If IsNull(Me.B) = True Then
sFilter = sFilter & " and B='" & Me.B & "'"
End IF
'テキストボックスC
If IsNull(Me.C) = True Then
sFilter = sFilter & " and C='" & Me.C & "'"
End IF
Me.Filter = sFilter
Me.FilterOn = True
End Sub
それぞれのテキストボックスのプロパティの名前のところには
A テキスト57
B テキスト65
C テキスト67
D テキスト69
となっています。
またぜひよろしくお願いします。
ほんとにすみません~・・・。
No.3
- 回答日時:
単純に、入力がなければ、条件に加えないようにしたらどうでしょうか?
Me.Filterに設定する内容を予め作っておきます。
Private Sub コマンド50_Click()
Dim sFilter As String
sFilter = "契約='" & Me!テキスト51 & "'"
'テキストボックスA
If IsNull(Me.A) = True Then
sFilter = sFilter & " and A='" & Me.A & "'"
End IF
'テキストボックスB
If IsNull(Me.B) = True Then
sFilter = sFilter & " and B='" & Me.B & "'"
End IF
'テキストボックスC
If IsNull(Me.C) = True Then
sFilter = sFilter & " and C='" & Me.C & "'"
End IF
Me.Filter = sFilter
Me.FilterOn = True
End Sub
ありがとうございます!!
うまくいきました!!
それと・・・もうひとつ質問なんですが・・・。
日付○日~○日、も選びたいんですが、同じようにすれば良いのでしょうか?
よろしくお願いします。
No.2
- 回答日時:
私の場合もクエリですけれど、ringo0120さんのおっしゃる「テキスト51」の前後にワイルドカード「"*"」をつけて&で繋げています。
あとNull記述もしてますね。こんなカンジです。
Like "*" & [forms]![フォーム名]![テキスト名] & "*" Or Is Null
これを各抽出条件に入れています。
検索条件が多い場合にクエリの抽出条件の列が1列で済むので重宝してます。書くのめんどくさいですけどね。
ありがとうございます!
ワイルドカード、私も最初やったのですが、どうもうまくいきませんでした。
H-blackさんの言うように書いてみるとできました!
なので、もうひとつの巨大検索フォームに使わせてもらいました~!!(^-^)
ありがとうございました!
No.1
- 回答日時:
クエリでうまくできます。
フォームにテキストボックス入力窓を3つ開け
クエリの抽出条件の欄にそのフォームの入力窓を入力して行きます。一行目は A と BとCを同じ行に 2行目はAとB 3行目はAとC 4行目は BとC 5行目はA 6行目はB 7行目はCと7行に分ければいいでしょう。アンド ではなくて オア で検索されるので 入力のない欄があってもだいじょうぶです
ありがとうございますーー!!
この方法、簡単だし、うまくできました!!
なので、これも検索フォームに使わせてもらいます!!
ほんとにありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
年月日を持つテーブルから年月...
-
Access2000で文字列中の半角ス...
-
SQL*Loader
-
Accessでの電話番号下4桁での検...
-
Accessのフォームで、空欄のレ...
-
VBAからクエリのパラメータを設...
-
アクセス マクロのメッセージ...
-
Access レポート印刷するときに...
-
レコードを保存するコード ア...
-
YahooのIDがロックされてしまい...
-
passwordが入れられません・・・・
-
エクセルVBA オプションボタ...
-
「フォームを作成できませんで...
-
サブフォームに対してGoToRecor...
-
データベースのINT型項目にNULL...
-
クエリで出来た表にチェックボ...
-
フォームで入力しても反映されない
-
Accessレポートのチェックボッ...
-
SQLで構文を間違って入力して;...
-
フィルタ後のフォームの件数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
年月日を持つテーブルから年月...
-
SQL*Loader
-
Accessのフォームで、空欄のレ...
-
検索フォームで空白を抽出したい
-
ACCESSのフォーム上で複数検索...
-
VBAからクエリのパラメータを設...
-
ACCESS2003 でクエリの抽出条件...
-
アクセス マクロのメッセージ...
-
Accessの検索フォームで。
-
Access2007のサブフォームのReq...
-
パススルークエリの動的パラメ...
-
ACCESS マクロで検索に...
-
access 検索フォームで検索が...
-
AccessにてExcelファイル名にパ...
-
Access2000で文字列中の半角ス...
-
アクセスの複数検索で日付の絞...
-
AccessのデータをExcelテンプレ...
-
アクセスのフォームにカンマ区...
-
DBソフト ACCESS:検索フォー...
-
Accessでの電話番号下4桁での検...
おすすめ情報