別MDB間テーブルのコピー方法

解決


VB中級者  2007-08-28 02:33:50  No: 143840

Access(2000)のMDB内にあるテーブルを別MDBへ
コピーする方法をご教授下さい。

以前同様の質問があったのですが、今回はコピー先のMDBに
パスワードが掛っている場合のコードの書き方です。

例)
  C:\AAA.MDB内の、テーブル:「Aテーブル」を
  C:\BBB.MDB内に「Bテーブル」という名称でコピー

  ※BBB.MDBには【0000】というパスワードがかかっています

以下はパスワードがない場合正常にコピーできます

 Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; C:\AAA.MDB")
 Dim SQLCm As OleDbCommand = Cn.CreateCommand
 Dim WSql As String

 WSql = "SELECT * INTO [;Database=C:\BBB.MDB].[Bテーブル] FROM [Aテーブル]"

 SQLCm.CommandText = (WSql)
 Cn.Open()
 SQLCm.ExecuteNonQuery()
 Cn.Close()

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


VB中級者  2007-08-28 02:43:10  No: 143841

すいません。コードの修正です。

Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; C:\AAA.MDB")

Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\AAA.MDB")


かさのば  2007-08-28 10:26:18  No: 143842

接続文字列に[Database Password = パスワード]を含めてあげればいいかも。
後、この辺も参考にするといいかも。
http://msdn2.microsoft.com/ja-jp/library/system.data.oledb.oledbconnection.connectionstring(VS.80).aspx


VB中級者  2007-08-28 20:06:19  No: 143843

かさのばさん。ご返答有難う御座います。

>接続文字列に[Database Password = パスワード]を含めてあげればいいかも。

私も[Database Password = パスワード]を含めた構文を色々作成して試したのですが、正常に動作する構文を作成できませんでした。

教えて頂いたURLを見てみたのですが、やはりこの辺りの構文は出ていないですね。


魔界の仮面弁士  2007-08-28 21:24:57  No: 143844

> 接続文字列に[Database Password = パスワード]を含めてあげればいいかも。
"Database Password=0000" ではなく、
"Jet OLEDB:Database Password=0000" ですよね。


魔界の仮面弁士  2007-08-28 21:37:51  No: 143845

> 教えて頂いたURLを見てみたのですが、やはりこの辺りの構文は出ていないですね。

見るべきは、[.NET Framework SDK] ではなく、[MDAC SDK] です。
ADO プログラマーズ ガイドの 付録 A にある
『Microsoft OLE DB Provider for Microsoft Jet』を見てください。

あとは、[DAO から ADO への移植] (Migrating from DAO to ADO) の
付録 B (Appendix B)からも、関連情報を得ることができます。
http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_11.aspx


VB中級者  2007-08-29 00:23:01  No: 143846

魔界の仮面弁士さん、ご返答有難うございます。

>"Database Password=0000" ではなく、
>"Jet OLEDB:Database Password=0000" ですよね。

そうですね、私も"Jet OLEDB:Database Password=0000"で
コーディングしていたのですが、ダメでした。

>http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_11.aspx

↑拝見しました。難しそうですが、この辺りにヒントがありそうですね。
私なりに解読してみたいと思います。


魔界の仮面弁士  2007-08-29 06:03:38  No: 143847

ひとつ確認。その文字列は、『接続文字列』にて指定していますか?

つまり、
  Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Database Password=0000; Data Source=C:\BBB.MDB;")
にして、
  WSql = "SELECT * INTO [Bテーブル] FROM [C:\AAA.MDB].[Aテーブル]"
という感じで。

もし、接続先を変更したくないのであれば、
  WSql = "SELECT * INTO [C:\BBB.MDB; pwd=0000].[Bテーブル] FROM [Aテーブル]"
という構文で。


VB中級者  2007-08-29 18:31:52  No: 143848

魔界の仮面弁士、ご回答有難う御座います。

>Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Database Password=0000; Data Source=C:\BBB.MDB;")

>WSql = "SELECT * INTO [Bテーブル] FROM [C:\AAA.MDB].[Aテーブル]"

接続先を変更するっていう方法もあったんですね。
今回の場合、C:\AAA.MDBにはパスワードがかかっていないのでこの方法でOKでした。

ただ、両方にパスワードがかかる場合もありえるので、その場合は
WSql = "SELECT * INTO [C:\BBB.MDB; pwd=0000].[Bテーブル] FROM [Aテーブル]"
の方法ですね。

この度は勉強になりました。
本当に有難う御座います。


VB中級者  2007-08-29 18:33:27  No: 143849

魔界の仮面弁士さん。
すいません、先ほどの書き込みが呼び捨てになってしまいました。
大変失礼しました。


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




  


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