• ベストアンサー

アクセスでテーブルの複製ができますか?

売上管理を作っていますが、月締処理として 日々売上処理で入力されたデータを集計して売上集計テーブルに書き込んでいます。 入力ミスをした場合を考えて、元に戻すための処理を 作っておこうと考えています。 売上集計テーブルの複製を月締め処理前にとってミスがあった時、元に戻す処理をVBAで書きたいのですがどのようにすればよいのでしょうか? よろしくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
noname#102878
noname#102878
回答No.1

これってAccessですか? バージョンは? とりあえずバージョンがわからないので、クエリーを作っておいて、VBAからクエリーを実行するってやつで。 【月次処理の前処理】 ・複製テーブルの中身を空にする ・売上集計テーブルの全件を複製テーブルにコピー 【下記戻し処理】 ・売上集計テーブルの中身を空にする ・複製テーブルの全件を売上集計テーブルにコピー ・複製テーブルの中身を空にする 動作はこんな感じ。 売上集計テーブルの名前が「tbl01」、複製テーブルの名前が「tbl02」だとします。 クエリーを新規作成し、デザイン画面で[表示]-[SQLビュー]に切り替えて 「DELETE * FROM tbl02;」 これを貼り付けて、「qry01DelTbl02」って名前で保存。 「INSERT INTO tbl02 SELECT tbl01.* FROM tbl01;」 これを貼り付けて、「qry02Add01To02」って名前で保存。 「DELETE * FROM tbl01;」 これを貼り付けて、「qry03DelTbl01」って名前で保存。 「INSERT INTO tbl01 SELECT tbl02.* FROM tbl02;」 これを貼り付けて、「qry04Add02To01」って名前で保存。 Sub 複製()  DoCmd.SetWarnings False  DoCmd.OpenQuery "qry01DelTbl02" ' 複製テーブルを空にする  DoCmd.OpenQuery "qry02Add01To02" ' 複製テーブルにコピー  DoCmd.SetWarnings True End Sub Sub 書き戻し()  DoCmd.SetWarnings False DoCmd.OpenQuery "qry03DelTbl01" ' 売上管理テーブルを殻にする  DoCmd.OpenQuery "qry04Add02To01" ' 売上管理テーブルにコピーする  DoCmd.OpenQuery "qry01DelTbl02" ' 複製テーブルを空にする  DoCmd.SetWarnings True End Sub 上記のようなコードを組み込んでください。 ただし、売上集計テーブルが別のテーブルとリレーションしていて参照整合性も設定してあるような複雑な構成の場合は通用しません。

mehiro2
質問者

お礼

お礼のお返事遅くなり申し訳ございませんでした。 また質問内容に書いてなくてすみません。Access2000です。 只今から試してみます。 データベースを作っていてバックアップの方法とか 探していたんですが、いまいち判りづらかったところがあり本当に助かりました。 ただ顧客IDでリレーションしているので気がかりです。

関連するQ&A