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()
以上、宜しくお願い致します。
すいません。コードの修正です。
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")
接続文字列に[Database Password = パスワード]を含めてあげればいいかも。
後、この辺も参考にするといいかも。
http://msdn2.microsoft.com/ja-jp/library/system.data.oledb.oledbconnection.connectionstring(VS.80).aspx
かさのばさん。ご返答有難う御座います。
>接続文字列に[Database Password = パスワード]を含めてあげればいいかも。
私も[Database Password = パスワード]を含めた構文を色々作成して試したのですが、正常に動作する構文を作成できませんでした。
教えて頂いたURLを見てみたのですが、やはりこの辺りの構文は出ていないですね。
> 接続文字列に[Database Password = パスワード]を含めてあげればいいかも。
"Database Password=0000" ではなく、
"Jet OLEDB:Database Password=0000" ですよね。
> 教えて頂いた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
魔界の仮面弁士さん、ご返答有難うございます。
>"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
↑拝見しました。難しそうですが、この辺りにヒントがありそうですね。
私なりに解読してみたいと思います。
ひとつ確認。その文字列は、『接続文字列』にて指定していますか?
つまり、
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テーブル]"
という構文で。
魔界の仮面弁士、ご回答有難う御座います。
>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テーブル]"
の方法ですね。
この度は勉強になりました。
本当に有難う御座います。
魔界の仮面弁士さん。
すいません、先ほどの書き込みが呼び捨てになってしまいました。
大変失礼しました。
ツイート | ![]() |