テーブルAにテーブルB(親階層)→テーブルC(子階層)を順次追加

Sub prcWrikeテーブル追加()
    Dim dbs As DAO.Database
    Dim rstWrike As DAO.Recordset
    Dim rstPrj As DAO.Recordset
    Dim rstTask As DAO.Recordset
    Dim lngKey As Long
    Dim strSQL As String
    
    Set dbs = CurrentDb()
    lngKey = 0 '初期化
    
    'Wrikeテーブル初期化
    strSQL = "DELETE * FROM t03a_Wrike;"
    dbs.Execute strSQL
    
    'wrikeレコードセット準備
    strSQL = "SELECT * FROM t03a_Wrike;"
    Set rstWrike = dbs.OpenRecordset(strSQL, dbOpenDynaset)
    
    'プロジェクトテーブルオープン
    strSQL = "SELECT * FROM t01a_Project;"
    Set rstPrj = dbs.OpenRecordset(strSQL, dbOpenDynaset)
    
    'タスクレコードセットオープン
    strSQL = "SELECT * FROM t02a_Task;"
    Set rstTask = dbs.OpenRecordset(strSQL, dbOpenDynaset)
    
    'プロジェクトをwrikeテーブルに追加
    Do Until rstPrj.EOF
        
        'Wrikeテーブルにプロジェクトを追加
        rstWrike.AddNew
        lngKey = lngKey + 1
        rstWrike!Key = lngKey
        rstWrike!Title = rstPrj!prjName
        rstWrike.Update
        
        'Wrikeテーブルにタスクを追加
        rstTask.MoveFirst
        Do Until rstTask.EOF
            rstWrike.AddNew
            lngKey = lngKey + 1
            rstWrike!Key = lngKey
            rstWrike!Title = rstTask!taskName
            rstWrike.Update
            rstTask.MoveNext
        Loop
        
lblNextPrj:
        '次のプロジェクトへ
        rstPrj.MoveNext
    Loop
    
    rstPrj.Close
    Set rstPrj = Nothing
    Set dbs = Nothing
    
    Debug.Print Now() & ":終了"
    
End Sub

コメント