ここでは、テーブルの複製を作成するサンプルを掲載しています。なお、すべてのカラムを複製することも、一部のカラムのみのデータを複製することもできます。
スポンサーリンク
テーブルの複製を新規作成する
次の VBA スクリプトによってオリジナルテーブルと同じ構造を持つ別テーブルを作成することができます。
' 結構しつこく確認ダイアログが出力されるので、抑制したい場合に記述する DoCmd.SetWarnings WarningsOn:=False Dim sql As String sql = "select * into バックアップテーブル2017 from オリジナルテーブル;" DoCmd.RunSQL sql ' システムメッセージの抑制を解除 DoCmd.SetWarnings WarningsOn:=True
オリジナルテーブルの全てのカラムのデータで「バックアップテーブル2017」という名前の新テーブルを作成しています。複製するカラムを指定する場合には、通常の select 文のようにカラムをカンマで区切りで指定します。
' カラムを指定してテーブルを作成する sql = "select col1, col2, col3 into バックアップテーブル2017 from オリジナルテーブル;"
なお、上記の例で言えばテーブル(バックアップテーブル2017)が既に存在する状態で、select ~ into ~ from 文を再実行しようとすると、テーブル(バックアップテーブル2017)は一度削除されてから、再作成されます。
謎SQL
Access では次の VBA は正常に動作します。謎仕様です。VBA と言えばよいのか、SQLの解釈と言えばよいのか・・・・
もしかして有名な話なのですか?これって。
Dim sql As String ' 全レコードが削除される ' もちろん、「 delete from テーブル1 」も動作します。 sql = "DELETE * FROM テーブル1;" DoCmd.RunSQL sql ' カラム(col1)のみ全部消えるかとも一瞬思いましたが ' 上記SQLと動作は同じです。 sql = "DELETE col1 FROM テーブル1;" DoCmd.RunSQL sql