Visual Basic Tips


Jetデータベース(DAO)スナップショットセットタイプを使ったテーブルへのアクセス


スナップショットセットを使ってJetデータベースのテーブルにアクセスします。ダイナセットと同じようにMoveFirst,MoveLast,MovePrevious,FindFirst、FindLast、FindNext、FindPreviousが出来ます。
レコードの更新はこのサンプルでは行っていませんが、ダイナセットやテーブルセットと同様に行う事ができます。
スナップショットはAbsolutePositionでレコードの位置を指定して(番目)アクセスできるので、スクロールバーのスクロールイベントでレコードを移動させる時に使ったりします。

Private Sub JetTblAccess()
  Dim ws As Workspace
  Dim db As Database
  Dim rs As Recordset
  Dim strSql As String

  
Debug.Print "----------------------------------"

  
'データベースオープン
  
Set ws = DBEngine.Workspaces(0)
  
Set db = ws.OpenDatabase(App.Path & "\work.mdb", False, False)
  strSql = "Select * From 新規テーブル ORDER BY FieldLong"

  
Set rs = db.OpenRecordset(strSql, dbOpenDynaset)

  
If rs.EOF Then
    
Debug.Print "レコード件数 0"
    
Exit Sub
  
Else
    rs.MoveLast
'Movelast しないと Absolutepositionはできません
    
Debug.Print "レコード件数" & rs.RecordCount
    rs.MoveFirst
  
End If

  
Do Until rs.EOF 'レコードの列挙
    
Debug.Print "Field = " & rs("Fieldtext") & "|" & rs("FieldInteger") & "|" & rs("FieldLong")
    rs.MoveNext
  
Loop

  
If rs.RecordCount <= 3 Then
    rs.AbsolutePosition = 3
'3番目のレコードへ移動
    Debug.Print "Field = " & rs("Fieldtext") & "|" & rs("FieldInteger") & "|" & rs("FieldLong")
  
End If
  db.Close
  ws.Close
End Sub


DownLoad vbtips022.lzh 7KB (VB6.0)