dポイントプレゼントキャンペーン実施中!

クエリからフォームをウィザードで作成しました。
このフォームではマウスのスクロールでデータが次々と変わるのですが、
特定の顧客を検索する事が出来ません。

このフォームの中に検索できるボタンを作りたいのですが
何せ初心者の為、ネットで検索してみましたがわかりませんでした。

お教えいただけましたら助かります。

ちなみにデータは5万件
検索かけるフィールド名は“ID”
クエリからフォームをつくりました。クエリ名は“検索用”です。
アクセスは97です。

よろしくお願い致します。

A 回答 (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

このコードの実行画面は次の通りです。
「アクセス フォームに検索ボタンをつくりた」の回答画像3
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2011/12/11 19:41

>ちなみにデータは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の顧客を指示しています。
「アクセス フォームに検索ボタンをつくりた」の回答画像2
    • good
    • 0

新しい検索用のフォームを作成し、そこに現在のフォームをサブフォームとして配置します。


新しいフォームに検索文字列を入れる非連結テキストボックスと検索ボタンを作成し
検索用クエリのIDの抽出条件を検索用のテキストボックスとします。

作成した検索ボタンを押したときのイベントプロシージャにサブフォームのリクエリーを記載します。


Me.Refresh
Me![サブフォーム名].Requery

みたいな感じでいいかもしれません。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

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

お礼日時:2011/12/11 19:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!