- 締切済み
アクセス フォームに検索ボタンをつくりたい
クエリからフォームをウィザードで作成しました。 このフォームではマウスのスクロールでデータが次々と変わるのですが、 特定の顧客を検索する事が出来ません。 このフォームの中に検索できるボタンを作りたいのですが 何せ初心者の為、ネットで検索してみましたがわかりませんでした。 お教えいただけましたら助かります。 ちなみにデータは5万件 検索かけるフィールド名は“ID” クエリからフォームをつくりました。クエリ名は“検索用”です。 アクセスは97です。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
先の回答で事足りるかと思いますが・・・。 検索ボタンを配置した場合を補足しておきます。 Option Compare Database Option Explicit Private Sub コマンド_検索_Click() Dim lngID As Long Dim frmCustomers As Form Dim rstCustomers As DAO.Recordset lngID = InputBox("検索する[id]を入力して下さい") If lngID > 0 Then Set frmCustomers = Screen.ActiveForm Set rstCustomers = frmCustomers.RecordsetClone rstCustomers.FindFirst "id = " & lngID If rstCustomers.NoMatch Then MsgBox "該当する顧客情報が見つかりませんでした。" Else frmCustomers.Bookmark = rstCustomers.Bookmark End If rstCustomers.Close Else MsgBox "検索する[id]が入力されていません。" End If End Sub このコードの実行画面は次の通りです。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
>ちなみにデータは5万件 フォームに5万件を表示して検索するなんて非現実的かと・・・ >検索かけるフィールド名は“ID” ちょっと意味不明です。 普通は、顧客テーブルは、顧客.[id]でも顧客.[名前]では検索しません。 検索は、顧客.[読み]が一般的です。 Q、このフォームの中に検索できるボタンを作りたい。 A、以下の手順で! 手順1、フォームを基にレコードセットを作成する。 手順2、レコードセットを検索する。 手順3、レコードセットのブックマークをフォームに反映する。 Option Compare Database Option Explicit Private Sub テキスト_参照するid_AfterUpdate() Dim lngID As Long Dim frmCustomers As Form Dim rstCustomers As DAO.Recordset lngID = Nz(Me.テキスト_参照するid, 0) If lngID > 0 Then Set frmCustomers = Screen.ActiveForm ' ---------------------------------------------------------- ' フォームを基にレコードセットを作成 ' ---------------------------------------------------------- Set rstCustomers = frmCustomers.RecordsetClone ' ---------------------------------------------------------- ' レコードセットを検索 ' ---------------------------------------------------------- rstCustomers.FindFirst "id = " & lngID If rstCustomers.NoMatch Then MsgBox "該当する顧客情報が見つかりませんでした。" Else frmCustomers.Bookmark = rstCustomers.Bookmark MsgBox "該当する顧客情報が見つかりました。" End If rstCustomers.Close End If End Sub 次は、このコードを実行した画面です。 ブックマークは、id=8の顧客を指示しています。
- kmetu
- ベストアンサー率41% (562/1346)
新しい検索用のフォームを作成し、そこに現在のフォームをサブフォームとして配置します。 新しいフォームに検索文字列を入れる非連結テキストボックスと検索ボタンを作成し 検索用クエリのIDの抽出条件を検索用のテキストボックスとします。 作成した検索ボタンを押したときのイベントプロシージャにサブフォームのリクエリーを記載します。 例 Me.Refresh Me![サブフォーム名].Requery みたいな感じでいいかもしれません。
お礼
早速のご回答ありがとうございます。 職場にて試させていただきます。 ありがとうございました。
お礼
ご丁寧に補足までいただきありがとうございました。 職場にて活用させていただきます。 ありがとうございました。