• 締切済み

アクセス フォームに検索ボタンをつくりたい

クエリからフォームをウィザードで作成しました。 このフォームではマウスのスクロールでデータが次々と変わるのですが、 特定の顧客を検索する事が出来ません。 このフォームの中に検索できるボタンを作りたいのですが 何せ初心者の為、ネットで検索してみましたがわかりませんでした。 お教えいただけましたら助かります。 ちなみにデータは5万件 検索かけるフィールド名は“ID” クエリからフォームをつくりました。クエリ名は“検索用”です。 アクセスは97です。 よろしくお願い致します。

みんなの回答

回答No.3

先の回答で事足りるかと思いますが・・・。 検索ボタンを配置した場合を補足しておきます。 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 このコードの実行画面は次の通りです。

rosey333
質問者

お礼

ご丁寧に補足までいただきありがとうございました。 職場にて活用させていただきます。 ありがとうございました。

回答No.2

>ちなみにデータは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)
回答No.1

新しい検索用のフォームを作成し、そこに現在のフォームをサブフォームとして配置します。 新しいフォームに検索文字列を入れる非連結テキストボックスと検索ボタンを作成し 検索用クエリのIDの抽出条件を検索用のテキストボックスとします。 作成した検索ボタンを押したときのイベントプロシージャにサブフォームのリクエリーを記載します。 例 Me.Refresh Me![サブフォーム名].Requery みたいな感じでいいかもしれません。

rosey333
質問者

お礼

早速のご回答ありがとうございます。 職場にて試させていただきます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう