- PR -

複数外部MDBを1つにする方法

投稿者投稿内容
未記入
会議室デビュー日: 2006/07/10
投稿数: 5
投稿日時: 2006-07-11 11:22
じゃんぬネット様 ありがとうございます。
.NET Framework1.0の為、Microsoft.Data.Odbcで試してみました。
Try
oCommand = New OdbcCommand("INSERT INTO a SELECT * FROM a in 'c:\\\\c.mdb'", oConnection)
oConnection.Open()
oCommand.ExecuteNonQuery()
ここでエラーが発生します。「パスワードが正しくありません。」
"SELECT * FROM MosaMosaAA" 部分を複数外部MDBを1つにするSQLに変更すると
上記エラーが発生してしまいました。
ConnectionString を試してみたかったのですが
INSERT INTO SELECT FROM IN パスワード付外部MDB の記述方法がわかりませんでした。
度々すみませんがご存知なら御教授宜しくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-11 12:33
引用:

未記入さんの書き込み (2006-07-11 11:22) より:

oCommand = New OdbcCommand("INSERT INTO a SELECT * FROM a in 'c:¥c.mdb'",
(snip)
ここでエラーが発生します。「パスワードが正しくありません。


エラーどおりです。

パスワードを指定して Connection を開いているのは、コピー先だけです。
コピー元には、パスワードを指定していませんよね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2006/07/10
投稿数: 5
投稿日時: 2006-07-11 12:50
じゃんぬねっと様 回答ありがとうございます。
度々すみません。きちんと説明していませんでした。
既にコピー元のMDBは開いておりそのMDBに約100個のMDBをINSERTします。
(キーは個別に付与しています。約100個を結合するイメージです。)
パスワードはすべてに付与しており、すべて同パスワードです。
コピー元には別のパスワードは付与しています。

>パスワードを指定して Connection を開いているのは、コピー先だけです。
そうなるとConnection を約100回行うという事でしょうか?
すみませんが御教授宜しくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-11 13:39
引用:

未記入さんの書き込み (2006-07-11 12:50) より:

度々すみません。きちんと説明していませんでした。
既にコピー元のMDBは開いておりそのMDBに約100個のMDBをINSERTします。
(キーは個別に付与しています。約100個を結合するイメージです。)
パスワードはすべてに付与しており、すべて同パスワードです。
コピー元には別のパスワードは付与しています。


はい、このあたりは大体想像どおりなので大丈夫ですよ。

引用:

そうなるとConnection を約100回行うという事でしょうか?
すみませんが御教授宜しくお願い致します。


unibon さん案と融合してみるというのはどうでしょうか?
つまり、こういうことです。

コード:

    Dim oCommand As System.Data.Odbc.OdbcCommand

    Try
        oCommand = New System.Data.Odbc.OdbcCommand("INSERT INTO CombineTable1 SELECT * FROM [C:\Source.mdb;pwd=makimakilove].Table1", oConnection)
        oCommand.ExecuteNonQuery()
    Finally
        If Not oCommand Is Nothing
            oCommand.Dispose()
        End If
    End Try


この部分を、別メソッドに抽出すれば、100 回実行しようと同じように呼ぶことができます。
もちろん、ファイルパスやパスワードなどは引数で指定できるようにします。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2006/07/10
投稿数: 5
投稿日時: 2006-07-11 15:19
じゃんぬねっと様 ありがとうございます。融合案で試してみました。

Dim cn As OdbcConnection
cn = New OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};" & _
"DBQ=c:\a.mdb;UID=;PWD=aaa")
Dim mystring As String = "INSERT INTO a SELECT * FROM [C:\b.mdb;PWD=aaa].a"
Dim cmd As OdbcCommand = New OdbcCommand(mystring, cn)
cn.Open()
cmd.ExecuteNonQuery()

これでパスワード付きのMDBをINSERTすることができました。
本当にお世話になりました。ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)