- ベストアンサー
テーブルのコピーについて
VB初心者質問です。 開発環境 VB6 SP6 WIN2000 VB6を使用しテーブルをコピーしようと思っています。 サイトが見つけられませんのでどなたかアドバイスお願います。 (内容) a.mdbとb.mdbの2つがあり、それぞれaaaテーブル があります。(構造は同一です) a.mdbのaaaテーブルをb.mdbのaaaテーブルに上書きコピーするにはどのようにすればよろしいですか? よろしくお願いします。
- みんなの回答 (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)
その他の回答 (3)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
>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
お礼
大変失礼しました。 丁寧なアドバイスありがとうございます。 早速試してみます。
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
マクロの中に「オブジェクトのコピー」というのがあります。 それを、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)
お礼
アドバイスありがとうございます。 この回答ってACCESSのVBAではないかと 思いますがいかがでしょうか? 当方、VB6での処理で考えています。 はずしていましたらお許しください。
b.mdb上にa.mdbのリンクテーブルlinkaaaを作ってよいならば、 ADOでコネクションを作って connection.execute "DELETE FROM aaa;" connection.execute "INSERT INTO aaa SELECT * FROM linkaaa;" が簡単かなと思います。
お礼
ありがとうございます。接続はADOで結構ですが残念ながらリンクテーブルの設定は出来ない状況です。
お礼
おかげさまで問題解決しました。 本当にありがとうございました。