MDB1のテーブルをMDB2のテーブルに上書きするには?

解決


ともけん  2006-03-11 01:11:34  No: 130603

こんにちは。
ともけんと申します。

現在、VB上でMDB1のテーブルAをMDB2のテーブルAに上書きしようと
模索中ですが、良い方法が見つかりません。
どなたかご教授頂ければ幸いです。

OS:XP
VB:VB6
Access:2000

になります。
言葉足らずかもしれませんが、よろしくお願い致します。


魔界の仮面弁士  2006-03-11 01:59:02  No: 130604

ADO か DAO で、mdb2側に接続して、
  DELETE FROM [テーブル]
  INSERT INTO [テーブル] SELECT * FROM [mdb1].[テーブル]
という感じにするとか。


ともけん  2006-03-11 02:19:46  No: 130605

魔界の仮面弁士さん、
回答ありがとうございます。

質問なんですが、
>ADO か DAO で、mdb2側に接続して、
>  DELETE FROM [テーブル]
>  INSERT INTO [テーブル] SELECT * FROM [mdb1].[テーブル]
>という感じにするとか。
まず、MDB2のテーブルを削除してからMDB1のテーブルをINSERTする
ということですよね?
①INSERT文はFROMの後でなくても良いのですか?
②[mdb1]に入るのは、下記の例で言うと"DB_obj"のことですか?
  (例:Set DB_obj = DBEngine.Workspaces(0).OpenDatabase(DBPath))

※ちなみにMDB2は常に接続し、MDB1は上書きする時のみ接続します。

以上、よろしくお願い致します。


魔界の仮面弁士  2006-03-11 02:32:38  No: 130606

> まず、MDB2のテーブルを削除してから
削除に関しては、テーブル自体を DROP する手法と、
テーブルの中身を DELETE する手法とがあります。

データ件数が多いときは、DROP の方が高速なのですが、その分、
INDEX の再定義などが必要となります。好きな方を選んでください。

> INSERT文はFROMの後でなくても良いのですか?
? 質問の意味が良く分かりませんが、正しい SQL になっているなら
問題無いと思いますよ。「削除の SQL」と「INSERT の SQL」の 2つを、
順に発行してみてください。

> [mdb1]に入るのは、下記の例で言うと"DB_obj"のことですか?
mdb1側を配置してある物理パスです。たとえば、
  FROM [C:\folder\mdb1.mdb].[TableA]
という感じですね。


ともけん  2006-03-13 20:39:05  No: 130607

こんにちは。

レコードの削除はできたのですが、INSERTがうまくいきません。
そこで質問なんですが、
>INSERT INTO [TableA] SELECT * FROM [C:\folder\mdb1.mdb].[TableA]
で、"[]"は必要なんですか?

ご教授のほど、よろしくお願い致します。


魔界の仮面弁士  2006-03-13 21:04:34  No: 130608

> INSERTがうまくいきません。
単に「うまくいかない」とだけ言われても、そちらの状況が
まったく分からないので、これ以上のアドバイスはできません。(^_^;)
(SQL にスペルミスがあるのか、環境側に問題があるのか…)

最終的に どんなSQLを書いて、それがどのような結果になるのでしょう?

> で、"[]"は必要なんですか?
特殊文字(ピリオドとか)を含まないなら、[ ] を省略できます。
ですが、つけておいた方が問題は少ないでしょう。


ともけん  2006-03-15 00:40:10  No: 130609

>魔界の仮面弁士さん
できました!!

"INSERT INTO " & TableName & " SELECT * FROM [mdb1.mdb]." & TableName & ";"

としたら、正常に動作しました。
質問に答えて頂きありがとうございました。
何かありましたら、これからもよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加