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