テーブルの操作

#1 レコードを読込む

使用例

'---------------------------------------------------------------------
'概要   レコードの読込み
'       ここでは、レコード数が51件ある[tbl得意先]テーブルの
'       レコードをDAO・ADOで読込む
'---------------------------------------------------------------------
Sub レコードの読込みDAO()

'   フィールド0〜フィールド2のレコードをすべて読込む
'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名

    Const strTbl As String = "tbl得意先"
    
    Dim dbs As Database
    Dim rst As DAO.Recordset
    
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset(strTbl)

    With rst
        Do Until .EOF               'すべてのレコードを読み込むループ
            Debug.Print .Fields(0), .Fields(1), .Fields(2)
'フィールド名を使用した場合 !得意先コード,!フリガナ,!得意先名
            .MoveNext
        Loop
    End With
    
    rst.Close: Set rst = Nothing
    dbs.Close: Set dbs = Nothing
End Sub

<実行結果>
 1            キッサタイムマシン          喫茶たいむましん
  ・
 (省略)
  ・
 50           コウゲンテイ  高原亭
 51           カランコロン  からんころん


Sub レコードの読込みADO()

'   得意先コードが[50]のフィールド0〜フィールド2のレコードを読込む
'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名
    
    Const strTbl As String = "tbl得意先"
    
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset

    Set cnn = CurrentProject.Connection
    
    With rst
        .Open strTbl, cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect

        Do Until .EOF                   'すべてのレコードを読み込むループ
            If .Fields(0) = 50 Then     '抽出条件を設定する
                Debug.Print .Fields(0), .Fields(1), .Fields(2)
            End If
            .MoveNext
        Loop
    End With
    
    rst.Close
    cnn.Close: Set cnn = Nothing
End Sub

<実行結果>
 50           コウゲンテイ  高原亭

#1 レコードを追加する

使用例

'---------------------------------------------------------------------
'概要   レコードを追加する
'       ここでは、レコード数が51件ある[tbl得意先]テーブルに
'       新規レコードをDAO・ADOで追加する
'---------------------------------------------------------------------
Sub レコードを追加するDAO()

'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名

    Const strTbl As String = "tbl得意先"
    
    Dim dbs As Database
    Dim rst As DAO.Recordset
  
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset(strTbl)

    With rst
    
        .AddNew
             .Fields(0) = 52
             .Fields(1) = "ナンデモヤ"
             .Fields(2) = "なんでも屋"
        .Update
    End With
    
    rst.Close: Set rst = Nothing
    dbs.Close: Set dbs = Nothing

End Sub


Sub レコードを追加するADO()

'   得意先コードが[50]のフィールド0〜フィールド2のレコードを読込む
'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名
    
    Const strTbl As String = "tbl得意先"
    
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset

    Set cnn = CurrentProject.Connection
    
    With rst
        .Open strTbl, cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect
        
        .AddNew
             !得意先コード = 52
             !フリガナ = "ナンデモヤ"
             !得意先名 = "なんでも屋"
        .Update
    End With
    
    rst.Close
    cnn.Close: Set cnn = Nothing
End Sub


#1 レコードを編集する

使用例

'---------------------------------------------------------------------
'概要   レコードを編集する
'       ここでは、[tbl得意先]テーブルのレコードをDAO・ADOで編集する
'---------------------------------------------------------------------
Sub レコードを編集するDAO()

'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名

    Const strTbl As String = "tbl得意先"
    
    Dim dbs As Database
    Dim rst As DAO.Recordset
  
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset(strTbl)

    With rst

        Do Until .EOF
            .Edit
            'フリガナをすべて半角にします
            !フリガナ = StrConv(!フリガナ, vbNarrow)
            .Update
            .MoveNext
        Loop
    End With
    
    rst.Close: Set rst = Nothing
    dbs.Close: Set dbs = Nothing

End Sub


Sub レコードを編集するADO()

'   得意先コードが[52]のフリガナと得意先名を編集する
'   「ナンデモヤ」→「ナンデモショウテン」
'   「なんでも屋」→「なんでも商店」
'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名
    
    Const strTbl As String = "tbl得意先"
    
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset

    Set cnn = CurrentProject.Connection
    
    With rst
        .Open strTbl, cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect
        
        Do Until .EOF
            
            If .Fields(0) = 52 Then     '条件を設定する
                .Fields(1) = "ナンデモショウテン"
                .Fields(2) = "なんでも商店"
                .Update
            End If
            
            .MoveNext
        Loop
    End With
    
    rst.Close
    cnn.Close: Set cnn = Nothing
End Sub

#1 レコードを削除する

使用例

'---------------------------------------------------------------------
'概要   レコードを削除する
'       ここでは、[tbl得意先]テーブルのレコードをDAO・ADOで削除する
'---------------------------------------------------------------------
Sub レコードを削除するDAO()

'   得意先コードが[52]のレコードを削除する
'   フィールド0:得意先コード

    Const strTbl As String = "tbl得意先"
    
    Dim dbs As Database
    Dim rst As DAO.Recordset
  
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset(strTbl)

    With rst

        Do Until .EOF
            
            If .Fields(0) = 52 Then     '条件を設定する
                .Delete
            End If
            
            .MoveNext
        Loop
    End With
    
    rst.Close: Set rst = Nothing
    dbs.Close: Set dbs = Nothing

End Sub


Sub レコードを削除するADO()

'   得意先コードが[52]のレコードを削除する
'   フィールド0:得意先コード
    
    Const strTbl As String = "tbl得意先"
    
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset

    Set cnn = CurrentProject.Connection
    
    With rst
        .Open strTbl, cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect
        
        Do Until .EOF
            
            If .Fields(0) = 52 Then     '条件を設定する
                .Delete
            End If
            
            .MoveNext
        Loop
    End With
    
    rst.Close
    cnn.Close: Set cnn = Nothing
End Sub