• ベストアンサー

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

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