お世話になります。
accessで下記の質問を立てましたが、解決できなかったので再度質問いたします。
(http://oshiete.goo.ne.jp/qa/6890851.html)
下記に説明をしています、分かりにくいかもしれません。。
どうぞご指導をお願い致します。
◆DBの構成◆
1)テーブル名:名簿(フィールドは下記の通り)
ID,名前1、名前2(担当者名)、ふりがな、住所、電話、住所1、住所2(マンション名等)、備考等)
2)フォーム名:検索フォーム
デザインビューで初めから作成して、テキストボックスを1つ作っています。
名前は『キーワード検索ボックス1』です。
またテキストボックスの下に検索をしてヒットした名簿を表示するサブフォームを入れています。
3)サブフォームのクエリ
・元データ
⇒名簿のテーブル。全フィールドを挿入して作成。
メインフォーム内のサブフォーム名は『(sub)キーワード検索』
・抽出条件
⇒フィールドの『名前1』、『名前2』、『ふりがな』、『住所1』、『住所2』、『備考』の抽出条件欄に
1行ごとずらして、『Like & "*" & [Forms]![検索フォーム]![キーワード検索ボックス1] & "*"
とした。
・マクロ
⇒メインフォームのテキストボックスの隣に検索という名前をつけたボタンを配置。
マクロは再クエリでコントロール名を『(sub)キーワード検索』とした。
ボタンのプロパティのイベントタブでクリック時に上記のマクロが実行されるように登録した。
◆やりたい事◆
accessで会社の顧客名簿を作成しました。
今の状態は1個のキーワードだと検索結果がサブフォームに表示されます。
それを、2段階で絞りこんでいく方法を探しています。
テキストボックスをもう一個作り、2個のキーワードで絞りこみたいです。
まず、1個のキーワードで『名前1』、『名前2』、『ふりがな』、『住所1』、『住所2』、『備考』のフィールドを検索してヒットしたものをサブフォームで表示させる。さらにそこから、また任意のキーワードを
『キーワード検索ボックス2』に入力してボタンをクリックすると、同じサブフォーム(または別のフォームに)絞りこみ検索結果が表示されるようにしたい。またVBAは苦手なので、クエリで解決をしたいです。
◆出来たこと、出来なかった事◆
・質問NO(6890851)で指導を頂いた、chuparkさんのある一つのフィールドに
『Like "*" & [Forms]![検索フォーム]![名前検索1] & "*" And Like "*" & [Forms]![検索フォーム]![名前検索2] & "*"』と入れると、そのフィールドに対しては2個のキーワードがヒットするとサブフォームに表示される事が出来た。
⇒これだと1つのフィールドに対してなので、やりたい事ではない。
1つのフィールドだけでなく、検索したいフィールド全てに対してまず1個のキーワードで
検索されたものを表示させ、そこから更にキーワードを検索して表示させたい。
・クエリに新しいフィールドを作りました。そこは全てのフィールドを『&』で結び、
抽出条件にchuparkさんの条件を入れてました。
⇒これだと一度に2個のキーワードを検索してしまう。1回目と2回目を比較もしたいので、一度ではなく、段階を踏んで検索が出来ない。また、フォーム自体を開いた時にサブフォームが真っ白になり
メッセージも出て見辛い。。(どんなメッセージが忘れました…)
以上
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No1、No2です。
質問で3)サブフォームのクエリ
・元データ
⇒名簿のテーブル。全フィールドを挿入して作成。
メインフォーム内のサブフォーム名は『(sub)キーワード検索』
・抽出条件
⇒フィールドの『名前1』、『名前2』、『ふりがな』、『住所1』、『住所2』、『備考』の抽出条件欄に
1行ごとずらして、『Like & "*" & [Forms]![検索フォーム]![キーワード検索ボックス1] & "*"
とした。
ということなので、No1の(1)は同じ事なのでそのままクエリを使ってください。
No.3
- 回答日時:
>◆やりたい事◆
> accessで会社の顧客名簿を作成しました。
> 今の状態は1個のキーワードだと検索結果がサブフォームに表示されます。
> それを、2段階で絞りこんでいく方法を探しています。
> テキストボックスをもう一個作り、2個のキーワードで絞りこみたいです。
> まず、1個のキーワードで『名前1』、『名前2』、『ふりがな』、『住所1』、『住所2』、『備
>考』のフィールドを検索してヒットしたものをサブフォームで表示させる。さらにそこから、
>また任意のキーワードを
>『キーワード検索ボックス2』に入力してボタンをクリックすると、同じサブフォーム(また
>は別のフォームに)絞りこみ検索結果が表示されるようにしたい。
ご希望の事は、クエリを2重にして作成すればVBAを使わなくても、クエリと再クエリのマクロだけで可能です。
サブフォームのレコードソースのクエリ名が記載されていないので、仮に「Q_検索」としておきます。
この「Q_検索」のコピーを作成し名前を「Q_検索2」に変更し、デザインビューで、以下を修正変更して保存します。
1.テーブルの表示から、「Q_検索」を追加し、デザインビュー下側のデザイングリッドのテーブルの名称を全て、「名簿」から「Q検索」に変更します。
2.デザイングリッドの抽出条件の、
Like "*" & [Forms]![検索フォーム]![キーワード検索ボックス1] & "*"
の[キーワード検索ボックス1]の部分を全て[キーワード検索ボックス2]に変更します。
3.デザインビュー上側のフィールドリストエリアから、「名簿」テーブルを削除します。
次に、サブフォームをデザインビューで開き、レコードソースを「Q_検索」から[Q_検索2]に変更して保存します。
以上で目的の抽出が可能だと思います。
No.2
- 回答日時:
もうついでだから、少し便利に?
ボタンを二つ追加します。
名前 標題
cmdすべて表示 すべて表示
cmd検索開始 検索開始
上記を設定したら、フォームの
コード表に以下を貼り付け保存してください。
「クエリ名」はサブフォームのレコードソース
になるクエリです。実際に合わせて変更してください。
Private Sub cmdすべて表示_Click()
Me.埋め込み0.Form.RecordSource = "名簿"
Me.埋め込み0.Form.Requery
End Sub
Private Sub cmd検索開始_Click()
Me.埋め込み0.Form.RecordSource = "クエリ名"
Me.埋め込み0.Form.Requery
End Sub
使い方は、「すべて表示」をクリックすると
サブフォームのレコードソースが「名簿」に置き換わり、
サブフォームに全データが表示されます。
「検索開始」をクリックするとサブフォームの
レコードソースがクエリに置き換わり、検索
できるようになります。
必要なら設定してみてください。
なお、サブフォームのレコードソースは
初期値はクエリのままでいいです。
No.1
- 回答日時:
いろいろ考えてみましたが、やはりVBAを使わないと
簡単にはいきそうもありません。VBAといっても
それほど大変なことではないので一応方法を
あげておきます。
(1)
クエリの抽出条件に
Nz([Forms]![検索フォーム]![キーワード検索ボックス1])
を入れていきます。そのとき上記を
フィールド|名前1 |名前2 |ふりがな
テーブル | | |
並び替え | | |
表示 | | |
抽出条件 |入れる | |
または | |入れる |
| | |入れる
のように重ならないようにいれていってください。
クエリのSQL文ではOrでつながっていきます。
(2)
フォームにボタンを三つ設定します。
それぞれプロパティで、名前、標題を
名前 標題
cmd抽出1 抽出1
cmd抽出2 抽出2
cmdフィルタ解除 フィルタ解除
のように設定してください。
(3)
以下をメインフォームのコード表に貼り付け
保存してください。
なお、以下のコード中で
「埋め込み0」
とありますが、これはサブフォームを表示しているコントロール名で
サブフォームそのものの名前ではありません。初期値は「埋め込み0」
のような名前で登録されます。
Private Sub cmd抽出1_Click()
Me.埋め込み0.Form.Requery
End Sub
Private Sub cmd抽出2_Click()
Dim str As String
Dim strFilter As String
str = Me!キーワード検索ボックス2
strFilter = " 名前1 Like '*" & str & "*' Or 名前2 Like '*" & str & "*' Or ふりがな Like '*" & str & "*' Or 住所1 Like '*" & str & "*' Or 住所2 Like '*" & str & "*' Or 備考 Like '*" & str & "*'"
Me.埋め込み0.Form.Filter = strFilter
Me.埋め込み0.Form.FilterOn = True
End Sub
Private Sub cmdフィルタ解除_Click()
Me.埋め込み0.Form.FilterOn = False
End Sub
(4)
使い方は、
テキストボックスにデータを入れ、ボタンをクリックしていきます。
抽出2まで済むと、フィルタ解除のボタンをクリックすると、
抽出1のデータが表示されます。抽出2のボタンをクリックすると
再び抽出2のデータが表示されます。
わからないところがあれば補足してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
-
クエリ実行結果0件の場合のフ...
-
ACCESS2003のグループ化のエラ...
-
ACCESSで、EXCELのような、sumi...
-
ACCESS フォームで抽出したデー...
-
VarChar型をINT型に変換するには
-
Accessクエリの抽出条件にフォ...
-
ACCESSで、フォームで抽出した...
-
ACCESS2007 マクロ クエリのパ...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
ACCESS 複数のフォームから同一...
-
(ACCESS)条件に応じて、テキ...
-
access別のテーブルを参照して...
-
ACCESSフォーム入力後の確定
-
帳票フォームでのあるコンボボ...
-
実行エラー'424' ????
-
Accessの選択クエリの抽出条件...
-
ACCESSアクションマクロでイン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでVBAから選択クエリの抽...
-
AccessでIDを入力したら他の項...
-
ACCESSで、EXCELのような、sumi...
-
Accessクエリの抽出条件にフォ...
-
クエリ実行結果0件の場合のフ...
-
ACCESS2003のグループ化のエラ...
-
クエリーの結果をフォームに表...
-
ACCESS フォームで抽出したデー...
-
サブフォームを利用したクエリ...
-
ACCESS2007 マクロ クエリのパ...
-
access クエリでIIF文で抽出条...
-
VarChar型をINT型に変換するには
-
ADOレコードセットのコピー
-
アクセスのフォームに連番を表...
-
ACCESSで、フォームで抽出した...
-
ACCESS クエリのデザインビュ...
-
Accessで月ごとのレポートを出...
-
AccessのフォームをExcelに出力
-
Accessでフィルタの実行アクシ...
-
フォームからクエリの抽出期間...
おすすめ情報