|
こんばんは。
>
>ご丁寧に教えていただきましてありがとうございます。
>ただ、私がしたいことは新しいテーブルを作成するのではなく
>テーブル作成クエリを実行して既存テーブルの複製を作りたいのです。
>つまり、既存テーブルのバックアップをとりたいのです。
バックアップなら、MDBファイルの自体をコピーという意見が出ています。
そのとおりだと思いますが、phooさんの仕様を尊重してテーブルを複製するクエリです
前回の投稿のado関連のプロシジャーはそのまま使います。
前回と同様にこのブックと同じフォルダに空のsample.mdbは作成して置いてください。
mainを以下のように変更しました。
'===================================================
Sub main()
Dim sql_str As String
Dim retcode As Long
If open_ado(ThisWorkbook.Path & "\sample.mdb") = 0 Then
sql_str = "drop table testTable"
Call exec_sql(sql_str)
sql_str = "drop table copyTable"
Call exec_sql(sql_str)
' ↑一度、テーブルを削除
sql_str = _
"CREATE TABLE testTable (ID integer PRIMARY KEY ,氏名 varchar(20),住所 varchar(30));"
retcode = exec_sql(sql_str)
' ↑testTableの作成 ID 氏名 住所 がフィールド名
If retcode = 0 Then
sql_str = " INSERT INTO testTable " _
& "(ID,氏名,住所) VALUES " _
& "(1, 'ichinose', '山梨県');"
retcode = exec_sql(sql_str)
' testTableに1レコードだけ作成 ID=1 氏名=ichinose 住所=山梨県
If retcode = 0 Then
sql_str = "select * into copyTable FROM testTable"
retcode = exec_sql(sql_str)
' testTableのコピーをcopyTableという名前で作成
If retcode = 0 Then
MsgBox "バックアップ終了"
Else
MsgBox Error(retcode)
End If
Else
MsgBox Error(retcode)
End If
Else
MsgBox Error(retcode)
End If
Call close_ado
End If
End Sub
これで試してみてください。
|
|