- ベストアンサー
テーブルのコピーについて
VB初心者質問です。 開発環境 VB6 SP6 WIN2000 VB6を使用しテーブルをコピーしようと思っています。 サイトが見つけられませんのでどなたかアドバイスお願います。 (内容) a.mdbとb.mdbの2つがあり、それぞれaaaテーブル があります。(構造は同一です) a.mdbのaaaテーブルをb.mdbのaaaテーブルに上書きコピーするにはどのようにすればよろしいですか? よろしくお願いします。
- biginert
- お礼率55% (20/36)
- Visual Basic
- 回答数4
- ありがとう数5
- みんなの回答 (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で結構ですが残念ながらリンクテーブルの設定は出来ない状況です。
関連する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を使用しています。 よろしくお願いします。
- 締切済み
- Visual Basic
- VBの質問です
VB6を使って開発をしています。 AとB2つのMDBがあってAの全テーブルのデータをBの全テーブルにデータをコピーしたいのですがプログラムでどうやるのかがわかりません。 どなたかわかるかた私に教えてください。お願いします。
- ベストアンサー
- Visual Basic
- ACCESS テーブルのコピー
XP-ProでVB.NETを使用しています。 複数のテーブルがあるMDBから、 一つのテーブルの中のデータの一部をコピーしたいと思います。 接続方法はADOです。
- ベストアンサー
- Visual Basic
- oracle テーブルコピー
はじめまして 現在、oracle9iを使い、開発しています。 宜しければご回答の方をお願い致します。 スキーマAAAにあるテーブルBBBをテーブルデータは不要として スキーマCCCに同じ定義のテーブルBBBをコピー作成したいと考えています。 どのように行えば、良いのでしょうか。 当方、初心者ですが、何卒ご回答の程、よろしくお願い致します。
- ベストアンサー
- Oracle
- SQL Server2000で列のコピーってできるのでしょうか?
AAAサーバAAデータベースAテーブル BBBサーバBBデータベースBテーブル があったとしまして、BテーブルはAテーブルのコピーでデータベースの型はまったく同じです。 Aテーブル、Bテーブル別々に更新をかけてしまった為 Bテーブルのある列(Eメール入力欄)をAテーブルの同じ場所に上書きコピーしたいのです。 つまり、AテーブルのEメール列だけをBのデータで上書きしたい。 この場合のオペレーションはどのようになるのでしょうか? おしえてください><
- ベストアンサー
- SQL Server
- VBからMDBのアクセス
VB初心者質問です。 開発環境 VB6 SP6 WIN2000 VB6からMDBの検索の手順について教えてください。 (質問) フォームに検索値用のテキストBOXを配置し、 その値でMDBのテーブルを検索し1件抽出する。 (検索値はテーブルのキー項目のため重複なし) 現在 Microsoft DAO 3.6 Object Library を参照しているので DAOで検索を行いたい。 知りたいことは検索の方法と 見つからなかった場合の判定についてです。 サンプルなどあればお願いいたします。
- ベストアンサー
- Visual Basic
- 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に毎日深夜に上書きコピーしたいのですが、スケジュール部分をどのように記述すればよいのでしょうか?宜しくお願いします。
- 締切済み
- その他(ITシステム運用・管理)
お礼
おかげさまで問題解決しました。 本当にありがとうございました。