ADO 2.1のRecordsetオブジェクトの使い方
ADO 2.1のRecordsetオブジェクトとプロパティの使い方を解説します。
使用例
ここでは、RecordsetオブジェクトのOpen,GetString,MoveNext,Find,Seek,Filter,Sort,AddNew,Updateメソッドの使い方を紹介します。
Sub RsOpenGetString()
Dim rs As New ADODB.Recordset
With rs
.Open "得意先", _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb;"
Debug.Print .GetString(adClipString, 5, "; ")
.Close
End With
End Sub
Sub RsOpenGetString2()
Dim rs As New ADODB.Recordset
With rs
.Open "Select * From 得意先;", _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb;"
Debug.Print .GetString(adClipString, 5, "; ")
.Close
End With
End Sub
Sub RsOpenGetString3()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Open "Select * From 得意先;", cnn, _
adOpenForwardOnly, adLockReadOnly
Debug.Print .GetString(adClipString, 5, "; ")
.Close
End With
End Sub
Sub RsOpenMoveNext()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Open "得意先", cnn, adOpenKeyset, adLockOptimistic
Do Until .EOF
For Each fld In .Fields
Debug.Print fld.Value & ";";
Next fld
Debug.Print
.MoveNext
Loop
.Close
End With
End Sub
Sub RsOpenMoveNext2()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Open "Select * from 得意先 Where 都道府県='東京都';", _
cnn, adOpenForwardOnly, adLockReadOnly
Do Until .EOF
For Each fld In .Fields
Debug.Print fld.Value & ";";
Next fld
Debug.Print
.MoveNext
Loop
.Close
End With
End Sub
Sub RsOpenFindForward()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Open "得意先;", cnn, adOpenKeyset, adLockReadOnly
.Find "都道府県='東京都'"
Do While Not .EOF
Debug.Print .Fields("得意先コード").Value & vbTab;
Debug.Print .Fields("得意先名").Value & vbTab;
Debug.Print .Fields("都道府県").Value;
Debug.Print
.Find "都道府県='東京都'", 1
Loop
.Close
End With
End Sub
Sub RsOpenFindBackward()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Open "得意先;", cnn, adOpenKeyset, adLockReadOnly
.MoveLast
.Find "都道府県='東京都'", 0, adSearchBackward
Do While Not .BOF
Debug.Print .Fields("得意先コード").Value & vbTab;
Debug.Print .Fields("得意先名").Value & vbTab;
Debug.Print .Fields("都道府県").Value;
Debug.Print
.Find "都道府県='東京都'", 1, adSearchBackward
Loop
.Close
End With
End Sub
Sub RsOpenSeek()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Index = "PrimaryKey" ' OrderID
.Open "受注", cnn, adOpenKeyset, adLockReadOnly, adCmdTableDirect
.Seek 1050, adSeekFirstEQ
If Not (.EOF Or .BOF) Then
For Each fld In .Fields
Debug.Print fld.Value & ";";
Next fld
Debug.Print
End If
.Close
End With
End Sub
Sub RsOpenSeek2()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Index = "PrimaryKey" ' OrderID, ProductID
.Open "受注明細", cnn, adOpenKeyset, adLockReadOnly, adCmdTableDirect
.Seek Array(1050, 102), adSeekFirstEQ
If Not (.EOF Or .BOF) Then
For Each fld In .Fields
Debug.Print fld.Value & ";";
Next fld
Debug.Print
End If
.Close
End With
End Sub
Sub RsOpenFilter()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Open "得意先", cnn, adOpenKeyset, adLockReadOnly
.Filter = "都道府県='東京都'"
Debug.Print "RecordCount:", .RecordCount
Do Until .EOF
For Each fld In .Fields
Debug.Print fld.Value & ";";
Next fld
Debug.Print
.MoveNext
Loop
.Close
End With
End Sub
Sub RsOpenSort()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.CursorLocation = adUseClient
.Open "得意先", cnn, adOpenKeyset, adLockReadOnly
.Sort = "都道府県"
Do Until .EOF
Debug.Print .Fields("都道府県").Value & ";";
Debug.Print .Fields("得意先コード").Value & ";";
Debug.Print .Fields("得意先名").Value & ";";
Debug.Print
.MoveNext
Loop
.Close
End With
End Sub
Sub RsOpenAdd()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Open "得意先", cnn, adOpenKeyset, adLockOptimistic
.AddNew
!得意先名 = "フレンドリーソフト"
!郵便番号 = "340-9999"
!都道府県 = "埼玉県"
!住所1 = "****"
!電話番号 = "(0480)40-9999"
.Update
Debug.Print .Fields("得意先コード").Value
.Close
End With
End Sub
Sub RsOpenAdd2()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Open "得意先", cnn, adOpenKeyset, adLockOptimistic
.AddNew Array("得意先名", "郵便番号", "都道府県", "住所1"), _
Array("フレンドリーソフト", "340-9999", "埼玉県", "****")
.Update
Debug.Print .Fields("得意先コード").Value
.Close
End With
End Sub
Sub RsOpenUpdate()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=D:\Temp\Northwind.mdb"
With rs
.Index = "PrimaryKey" ' CustomerID
.Open "得意先", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect
.Seek 53, adSeekFirstEQ
!担当者名 = "平成 花子"
.Update
.Close
End With
End Sub
|
|