ADO 3
フィールドの値を取得する
レコードセットの各フィールドの値を取得するには Fields を使います。
Public Sub DataValue() Dim rs As New ADODB.Recordset rs.Open "社員テーブル", CurrentProject.Connection, adOpenKeyset, adLockOptimistic MsgBox rs.Fields.Item(0).Value & vbTab _ '()内の数字はフィールド名 & rs.Fields.Item(1).Value & vbTab _ '0(テーブルの一番左)から始まる & rs.Fields.Item(2).Value & vbTab _ & rs.Fields.Item(3).Value & vbTab _ rs.Close End Sub
Public Sub DataValue() Dim rs As New ADODB.Recordset Dim fldName As Field Dim fldData As String rs.Open "社員テーブル", CurrentProject.Connection, adOpenKeyset, adLockOptimistic '各フィールド名とデータを表示する For Each fldName In rs.Fields fldData = fldData & fldName.name & ":" & vbTab & fldName & vbNewLine Next MsgBox fldData rs.Close End Sub
Commandオブジェクトを使ってSQLを実行する
CommandオブジェクトのCommandTextを使ってSQLを実行することができます。
Public Sub Cnn() Dim myCom As New ADODB.Command Dim myRs As New ADODB.Recordset myCom.ActiveConnection = CurrentProject.Connection myCom.CommandText = "SELECT * FROM 顧客リスト" Set myRs = myCom.Execute Debug.Print myRs.GetString myRs.Close End Sub
Commandオブジェクトを使ってクエリーを実行する
CommandオブジェクトのCommandTextにクエリーを指定して実行することもできます。
Public Sub Query() Dim myCom As New ADODB.Command Dim myRs As New ADODB.Recordset myCom.ActiveConnection = CurrentProject.Connection myCom.CommandText = "クエリ1" Set myRs = myCom.Execute Debug.Print myRs.GetString myRs.Close End Sub
トランザクションを取り消す(ロールバック処理)
RollbackTrans を使うと、トランザクション処理を中止して終了することができます。
Public Sub Rollback() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=E:\Sample.mdb" cn.Open rs.Open "社員名簿",cn ********* トランザクション開始 ********** cn.BeginTrans rs!営業所コード.Value ="100" '営業所コードを100に変更 rs.Update ******************************************* ********* トランザクション中止 ********** cn.RollbackTrans ******************************************* rs.Close cn.Close End Sub
Excelのワークシートを読み込む
Properties.Item に Excel を指定すると、エクセルのワークシートをレコードセットとして読み込むことができます。
Public Sub Excel() Dim myCon As New ADODB.Connection Dim myRs As New ADODB.Recordset myCon.Provider = "Microsoft.Jet.4.0" myCon.Properties.Item("Extended Properties").Value = "Excel 8.0" myCon.Properties.Item("Data Source").Value = "D:\Book.xls" myCon.Open myRs.Open "Sheet1$", myCon, , , adCmdTableDirect Do While Not myRs.EOF Debug.Print myRs.Fields("NAME").Value myRs.MoveNext Loop myRs.Close myCon.Close End Subテキストファイルを読み込みたい場合は、ConnectionString に MSDASQL を指定します。
Public Sub Text() Dim myCon As New ADODB.Connection Dim myRs As New ADODB.Recordset myCon.ConnectionString = "Provider=MSDASQL;" "DBQ=E:\data\;" & _ 'データファイルのあるフォルダを指定 "Driver={Microsoft Text Driver (*.txt;*.csv)};" & _ "Extensions=txt,csv,tab,;" & _ 'テキストファイルの形式 "FIL=txt" 'ファイルタイプ myCon.Open myRs.Source = "data.txt" 'データファイル名 myRs.Open ,myCon Do While Not myRs.EOF Debug.Print myRs.Fields("NAME").Value myRs.MoveNext Loop myRs.Close myCon.Close End Sub