ダイナセットを使ってJetデータベースのテーブルにアクセスします。修正と削除の所でMoveNextを使って次レコードに移動しています。レコードを移動するには他にMoveFirst(先頭へ移動)MoveLast(最後へ移動)MovePrevious(一つ前のレコードに移動)があります。
レコードを検索するのはFindFirst、FindLast、FindNext、FindPrevious を使用します。
Private SubJetTblAccess()
Dim wsAsWorkspace
DimdbAsDatabase
Dimrs As Recordset
DimiAs Integer
DimstrSqlAs String
'データベースのオープン
Setws = DBEngine.Workspaces(0)
Setdb = ws.OpenDatabase(App.Path & "\work.mdb",False,False)
strSql = "SELECT * FROM 新規テーブル"
Setrs = db.OpenRecordset(strSql,dbOpenDynaset)
Debug.Print "0:MoveLast前レコード件数 = " & rs.RecordCount'ここではレコードにまだアクセスしていないので正しく件数が表示されません
If rs.EOFThen
Else
rs.MoveLast
End If
Debug.Print "0:MoveLast後レコード件数 = " & rs.RecordCount
If rs.EOFThen
Else
rs.MoveFirst'MoveFirstをしておかないと次の削除処理でレコードが存在していてもEOFになってしまいます。
End If
'削除
ws.BeginTrans
Do Until rs.EOF
rs.Delete
rs.MoveNext
Loop
ws.CommitTrans'Rollbackすると更新内容はキャンセルされます。
Debug.Print "1:レコード件数 = " & rs.RecordCount
'追加
ws.BeginTrans
Fori = 1To10
rs.AddNew
rs("FieldText") = i & "番目追加"
rs("FieldInteger") = 100 + i
rs("FieldLong") = 200 + i
rs.Update
Next
ws.CommitTrans'Rollbackすると更新内容はキャンセルされます。
Debug.Print "2:レコード件数 = " & rs.RecordCount
'修正
i = 0
ws.BeginTrans
Do Until rs.EOF
i = i + 1
rs.Edit
rs("FieldText") = i & "番目更新"'キーも更新できます!
rs("FieldInteger") = 1000 + i'キーも更新できます!
rs("FieldLong") = 2000 + i
rs.Update
rs.MoveNext
Loop
ws.CommitTrans'Rollbackすると更新内容はキャンセルされます。
Debug.Print "3:レコード件数 = " & rs.RecordCount
db.Close
ws.Close
End Sub
DownLoad vbtips020.lzh 8KB (VB6.0)