• ベストアンサー

テーブルのコピーについて

VB初心者質問です。 開発環境 VB6 SP6 WIN2000  VB6を使用しテーブルをコピーしようと思っています。 サイトが見つけられませんのでどなたかアドバイスお願います。 (内容) a.mdbとb.mdbの2つがあり、それぞれaaaテーブル があります。(構造は同一です) a.mdbのaaaテーブルをb.mdbのaaaテーブルに上書きコピーするにはどのようにすればよろしいですか? よろしくお願いします。

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

  • ベストアンサー
回答No.4

すいません。訂正です。 >a.mdbとb.mdbの2つがあり、それぞれaaaテーブルがあります。(構造は同一です) これを読み飛ばしておりました。 私の方法は、コピー先にテーブルを作成する方法です。 以下に、訂正を記します。 ※ADOでの方法()メソッドにおいて ↓この部分は不要 >l_strSQL = "" >l_strSQL = l_strSQL & "SELECT * " & vbCrLf >l_strSQL = l_strSQL & "INTO [MS Access; DATABASE=C:\コピー先.mdb].コピー先の名前" & vbCrLf >l_strSQL = l_strSQL & "FROM コピー元の名前" & vbCrLf >l_adoCnn.Execute (l_strSQL) んで、こっちを利用してください。 内容は#1の16AugustさんのSQL文と、ほぼ一緒です。 違いは、クエリを利用しないだけです。 l_strSQL = "" l_strSQL = l_strSQL & "DELETE * FROM [MS Access; DATABASE=C:\コピー先.mdb].aaa" & vbCrLf l_adoCnn.Execute (l_strSQL) l_strSQL = "" l_strSQL = l_strSQL & "INSERT INTO [MS Access; DATABASE=C:\コピー先.mdb].aaa" & vbCrLf l_strSQL = l_strSQL & "SELECT *" & vbCrLf l_strSQL = l_strSQL & "FROM aaa" & vbCrLf l_adoCnn.Execute (l_strSQL)

biginert
質問者

お礼

おかげさまで問題解決しました。 本当にありがとうございました。

その他の回答 (3)

回答No.3

>ACCESSのVBAではないかと思いますがいかがでしょうか? >当方、VB6での処理で考えています。 ※DoCmdについて VB6であれば、その前にアクセスアプリケーション.DoCmdにするだけです。 ※ADOについて VB6であれば、独自にコネクションを張って、それに仕事をさせるだけです。 Sub アクセス利用()   Dim accObj As Object   Set accObj = CreateObject("Access.Application")   accObj.OpenCurrentDatabase "C:\コピー元.mdb"   accObj.DoCmd.CopyObject "C:\コピー先.mdb", "コピー先での名前", 0, "コピー元の名前"      accObj.Quit   Set accObj = Nothing End Sub Sub ADOでの方法()   Dim l_strSQL  As String   Dim l_adoCnn  As Object   Set l_adoCnn = CreateObject("ADODB.Connection")      l_adoCnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\コピー元.mdb"      l_strSQL = ""   l_strSQL = l_strSQL & "SELECT * " & vbCrLf   l_strSQL = l_strSQL & "INTO [MS Access; DATABASE=C:\コピー先.mdb].コピー先の名前" & vbCrLf   l_strSQL = l_strSQL & "FROM コピー元の名前" & vbCrLf      l_adoCnn.Execute (l_strSQL)      l_adoCnn.Close   Set l_adoCnn = Nothing End Sub

biginert
質問者

お礼

大変失礼しました。 丁寧なアドバイスありがとうございます。 早速試してみます。

回答No.2

マクロの中に「オブジェクトのコピー」というのがあります。 それを、VBAに変換してみました。 DoCmd.CopyObject "C:\コピー先.mdb", "コピー先での名前", acTable, "コピー元の名前" またはSQL文で、テーブル作成クエリのようなことも出来ます。 Dim l_strSQL As String l_strSQL = "" l_strSQL = l_strSQL & "SELECT * " & vbCrLf l_strSQL = l_strSQL & "INTO [MS Access; DATABASE=C:\コピー先.mdb].コピー先での名前" & vbCrLf l_strSQL = l_strSQL & "FROM コピー元の名前" & vbCrLf CurrentProject.Connection.Execute (l_strSQL)

biginert
質問者

お礼

アドバイスありがとうございます。 この回答ってACCESSのVBAではないかと 思いますがいかがでしょうか? 当方、VB6での処理で考えています。 はずしていましたらお許しください。

noname#60992
noname#60992
回答No.1

b.mdb上にa.mdbのリンクテーブルlinkaaaを作ってよいならば、 ADOでコネクションを作って connection.execute "DELETE FROM aaa;" connection.execute "INSERT INTO aaa SELECT * FROM linkaaa;" が簡単かなと思います。

biginert
質問者

お礼

ありがとうございます。接続はADOで結構ですが残念ながらリンクテーブルの設定は出来ない状況です。

関連するQ&A

  • Accessデータを違うmdbにコピーしたい

    VB2005で、mdbをデータベースにして開発しています。 aaa.mdbのテーブル1のデータをbbb.mdbのテーブル1に読み込ませたいと思っています。 bbb.mdbのテーブル1は、aaa.mdbのテーブル1よりフィールド数が多く、 該当する列にデータを読み込ませたいと思っています。 今まで、バックアップはaaa.mdbを丸ごとコピーして圧縮ファイルにしていました。復元の時は、解凍して上書きする、という手法をとっていました。 しかし、今回どうしてもテーブル1に列を追加しなくてはならず、aaa.mdbのバックアップデータをbbb.mdbに読み込ませて、VB2005のフォームに表示したいと考えております。 以上のような操作は可能でしょうか?可能でしたらその手法を是非教えてください。 また、データベースアプリを作成する上でアプリ完成後に、カスタマイズや計算方法の変更により列の追加が必要になる、いうことはまずいことでしょうか?前もって考えてフィールドを持っておくべきなのでしょうか?経験がないため、わかりません。この点についてもアドバイスがありましたら宜しくお願い致します。

  • mdbのテーブルを別のmdbのテーブルに追加

    2種類のMDBがあり 一つは 毎日の入力にて使用、もう一つは 累積として使用している。 それぞれに 同一デザインのテーブルがあります。 毎日の入力用のMDB内ののテーブルのデータをすべて 二つ目のMDBのテーブルに 追加したいのですが 一件読み込んで 一件書き込むなどと プログラムしていましたが 毎日の入力用のMDBが たくさんになったため 処理が遅くてたいへんです。 なにか 簡単に かつ 高速にすることは可能でしょうか? 開発環境は VB6 SP6 WindowsXP ADOを使用しています。 よろしくお願いします。

  • VBの質問です

    VB6を使って開発をしています。 AとB2つのMDBがあってAの全テーブルのデータをBの全テーブルにデータをコピーしたいのですがプログラムでどうやるのかがわかりません。 どなたかわかるかた私に教えてください。お願いします。

  • ACCESS テーブルのコピー

    XP-ProでVB.NETを使用しています。 複数のテーブルがあるMDBから、 一つのテーブルの中のデータの一部をコピーしたいと思います。 接続方法はADOです。

  • oracle テーブルコピー

    はじめまして 現在、oracle9iを使い、開発しています。 宜しければご回答の方をお願い致します。 スキーマAAAにあるテーブルBBBをテーブルデータは不要として スキーマCCCに同じ定義のテーブルBBBをコピー作成したいと考えています。 どのように行えば、良いのでしょうか。 当方、初心者ですが、何卒ご回答の程、よろしくお願い致します。

  • SQL Server2000で列のコピーってできるのでしょうか?

    AAAサーバAAデータベースAテーブル BBBサーバBBデータベースBテーブル があったとしまして、BテーブルはAテーブルのコピーでデータベースの型はまったく同じです。 Aテーブル、Bテーブル別々に更新をかけてしまった為 Bテーブルのある列(Eメール入力欄)をAテーブルの同じ場所に上書きコピーしたいのです。 つまり、AテーブルのEメール列だけをBのデータで上書きしたい。 この場合のオペレーションはどのようになるのでしょうか? おしえてください><

  • VBからMDBのアクセス

    VB初心者質問です。 開発環境 VB6 SP6 WIN2000  VB6からMDBの検索の手順について教えてください。 (質問) フォームに検索値用のテキストBOXを配置し、 その値でMDBのテーブルを検索し1件抽出する。 (検索値はテーブルのキー項目のため重複なし) 現在 Microsoft DAO 3.6 Object Library を参照しているので DAOで検索を行いたい。 知りたいことは検索の方法と 見つからなかった場合の判定についてです。 サンプルなどあればお願いいたします。

  • Accessのテーブルへのデータインポートについて

    Accessのテーブルへのデータインポートについて Access2002で、A.mdbのTESTテーブルからB.mdbのTESTテーブル(構造は同じ)へテーブルデータをインポートしたいのです。 TESTテーブルの主キーはSEQ(オートナンバー)しかありません。 そのときに、コピー元とコピー先の主キーに重複があった場合、オートナンバーなので自動で再付番しデータが追加して欲しかったのですが、 Accessの機能のエクスポート、インポートでは、コピー先に主キーに重複があったデータは上書きされてしまいます。 テーブルを開き、データをコピー&ペーストしますと、ペーストしたときにオートナンバーで自動で再付番されます。 この方法でもいいのですが、データが数百万件あるので、現実的ではありません。 Accessのインポート・エクスポートで、オートナンバーで主キーを再付番してから、B.mdbのTESTテーブルにデータ追加する方法はないでしょうか? よろしくお願いいたします。

  • access レコードを他テーブルにコピーしたい

    教えてください 現在テーブル5つ(A,B,C,D,E)とそれぞれのレコードを表示するフォームが5つ(A1,B1,C1,D1,E1)あります。 テーブルのフィールドはそれぞれ同じです。 やりたいことはフォーム上からレコードセレクタで選択しているレコードを、 コンボボックスから選んだテーブルに新規追加(コピー)することです。 添付画像のようにフィールドが定義されており、name,addres,phoneだけをコピーしたいと思っています。 よろしくお願いします。 A.mdb =================================================== id     name     addres     phone     etc =================================================== 1     suzuki     tokyo     03333     aaa.txt 2     saito     oosaka     0638      3     tanaka     tokyo     03848     bb.jpg

  • COPYコマンドでスケジュール機能はありますか?

    COPYコマンドで、サーバーAの中のaaa.mdbファイルをサーバーBのaaa.mdbに毎日深夜に上書きコピーしたいのですが、スケジュール部分をどのように記述すればよいのでしょうか?宜しくお願いします。