No.6ベストアンサー
- 回答日時:
サンプルです。
データレコード1件づつやらないでもできます。
CopyTableに二つのファイルパス(元、先)を指定してください。
Private Const CONNECTCONST As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Sub Main()
Call CopyTable("c:\A.mdb", "c:\B.mdb")
End Sub
Sub CopyTable(inSrcDB As String, inDstDB As String)
Dim Cnn As ADODB.Connection
Dim Cat As ADOX.Catalog
Dim wkTbl As ADOX.Table
Dim strConnect As String
Dim strTblName As String
Dim strSQL As String
'まず初期化
Set Cnn = New ADODB.Connection
Set Cat = New ADOX.Catalog
'DBの接続文字
strConnect = CONNECTCONST & inSrcDB & ";"
'接続
Cnn.Open strConnect
'カタログ作成
Cat.ActiveConnection = Cnn
'カタログの中から、システムテーブル以外のものについて処理を行います。
For Each wkTbl In Cat.Tables
If wkTbl.Type = "TABLE" Then
'テーブル名を取得
strTblName = wkTbl.Name
'コピー先のテーブルデータを削除するSQL文の実行
strSQL = "delete from [" & inDstDB & "]." & strTblName
Cnn.Execute strSQL
'コピー元をコピー先へデータをコピーするSQL文の実行
strSQL = "insert into [" & inDstDB & "]." & strTblName & _
" select * from " & strTblName
Cnn.Execute strSQL
End If
Next wkTbl
Cnn.Close
Set Cnn = Nothing
End Sub
No.5
- 回答日時:
まとめますと…。
1.デバッグ用DB(A)、本番用DB(B)があり、
BへAのレコードをテーブル毎に移行(コピー?)したい。
(どっちが本番用かは?です)
2.Bの帳票テーブルには削除できないレコードがある為、
帳票テーブルについては追記を行いたい。
⇒主キーが重なる場合は移行は行わない。
※ここで問題となるのがその他のテーブルで、
Bの既存レコードはどうするのでしょう?
(1)テーブルの内容をクリアしてまったくAと同じにするのでしょうか?
(2)もしくは追記を行い主キーが重なった場合は上書きとするのでしょうか?
こんな感じでしょうか?補足お願い致します。
P.S.
VBでDBバックアップツールを開発していらっしゃるのでしょうか?
この回答への補足
Bの中にあるレコードの中味は消去します。
あるテーブルだけ残してほかのテーブルの中味を全部いれたいのです。
私は普通のVBでのシステムを開発しています。バックアップはやっていないです。
本当に話がわかりずらい文章ですいません。
No.4
- 回答日時:
全く同意見です。
単なるMDBのバックアップなら、
Kill B.mdb
FileCopy A.mdb, B.mdb
で良いのでは?
もしかして、B.mdbは削除してはいけないテーブルも存在してるのですか?
No.3
- 回答日時:
詳細な用途がわからないのでなんとも回答が難しいです。
DBのまるごとバックアップなのか、追記でもよいのか。
スピードを優先されたい様ですが、
BのDB自体を一旦削除し、
AのDBをBとしてリネーム(又はコピー)するっていうのはいかがですか?
この回答への補足
練習用のDBと本番用のDBと内容がまったく同じであるのですが、帳票を使っているため帳票用のテーブルはコピーはできないみたいなので全部で約20テーブルくらいのテーブルの中味だけをコピーしたいです。
やっぱり1レコードづつループでまわすしかないでしょうか??
No.2
- 回答日時:
必要な情報が載ってません。
1.DBの接続方式は?ADOとかDAOなどがありますよね。
2.Aに元のテーブルがあるんですよね。Bにも同じテーブルが存在してるのですか?テーブルの作成から行うのですか?
2-1.もしテーブルの作成から行うのであれば、キーとかの情報も全てコピーするのですか?
2-2.もしテーブルの作成を行わないのであれば、すでにBに入っているデータは消去するのですか?
この回答への補足
DBの接続はADOです。テーブルはまったく同じものです。しかしテーブルは複数あり全部同じです。
2 テーブルの作成はしないです。テーブルの中味のデータだけをコピーしたいです。
2-2 Bには行っているテーブルは消去します。
すいません補足させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Access(アクセス) ACCESS2019 ナビゲーションウィンドウの色 1 2022/05/10 17:15
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
手動または分散トランザクショ...
-
他のMDBのテーブルに追加したい
-
ExcelVBAからAccessMDB内のテー...
-
VBとアクセスでSQL文に変...
-
Accessで別mdbのテーブルをコピー
-
asp.net mvcを利用する場合の複...
-
ACCESS2010 実行時エラー 2766
-
エクセルのテーブルを解除する...
-
ExcelからAccessのテーブルに書...
-
VB.NET コマンドの使い回しに問...
-
CSVファイルのエクスポートでソ...
-
Accessのフォームでリス...
-
Excel複数シートをaccessへ一括...
-
『列名 '担当者CD' があいま...
-
HTMLのテーブルの行数が多くな...
-
AccessからExcelへエクスポート...
-
(泣)VBscriptでinnerhtmlを使...
-
リストボックスに複数列表示し...
-
.net 複数の主キーを設定する方法
-
VB6のADO接続
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBとアクセスでSQL文に変...
-
Accessで別mdbのテーブルをコピー
-
他のMDBのテーブルに追加したい
-
SQLを発行とは?クエリの作成と...
-
手動または分散トランザクショ...
-
HTMLのテーブルの行数が多くな...
-
エクセルのテーブルを解除する...
-
ExcelVBAからAccessMDB内のテー...
-
Excel複数シートをaccessへ一括...
-
DataGridの中身をDataSetにテー...
-
CSVファイルのエクスポートでソ...
-
AccessからExcelへエクスポート...
-
.net 複数の主キーを設定する方法
-
『列名 '担当者CD' があいま...
-
COBOLのINVALID KEYが理解でき...
-
アクセステーブル、リンクとロ...
-
ACCESSのテーブル名をリストに...
-
MDBテーブルへの追加変更を教え...
-
【ADO】「Execute」を使うと...
-
ACCESS2010 実行時エラー 2766
おすすめ情報