2016-05-16 18 views
0

DoCmd.GoToRecordまたはDoCmd.FindRecordを使用すると、テーブル内のレコードをすばやく見つけたり、レコードを編集したり、そのレコードにフォーカスを当てたりできますか(後でそのレコードからループを開始したい) ?DAOレコードを見つける

私はこのような方法(該当する場合)は、レコードセット全体(特に大きなレコードセット)をループするよりも速いと信じています。

主キーは、9999(フィールズ(0)= 9999)であると仮定すると、私が試してみました:

Dim rs as DAO.Recordset 

Set rs = CurrentDb.OpenRecordset("Tbltest") 
DoCmd.FindRecord "9999", acEntire, True, acSearchAll, True 
Debug.Print rs.Fields(0) 

私は "1" を取得します。メソッドは失敗しました。

+0

このコードは、フォーカスのあるフォームのフォーカスのあるフィールドで値 "9999"を探します。 'rs.Fields(0)'は最初のレコードを指しています。つまり、 '1'です。 – marlan

答えて

3

DAO.Recordsetの場合は、rs.FindFirst and rs.FindNextの方法を使用します。

Set rs = CurrentDb.OpenRecordset("Tbltest", dbOpenDynaset) 
lngValue = 9999 
rs.FindFirst "myPrimaryKey = " & lngValue 

' start loop from there 
If Not rs.NoMatch Then 
    Do While Not rs.EOF 
     Debug.Print rs(0) 
     rs.MoveNext 
    Loop 
End If 

それはローカルテーブルの場合は、rs.Seek方法もあるが、表には、いくつかの日のバックエンドまたはサーバーのデータベースからリンクされる可能性がある場合、私は、検索方法にこだわっ示唆しています。

関連する問題