プロが教えるわが家の防犯対策術!

お世話になっています。
行き詰って困っています。

あるmdb(Access2000形式)内のテーブルを別のmdb(同)から見られるようリンクテーブルを作りたいのですができません。
VB.NET 2005 でやっています。

いろいろ調べてMSDN等からサンプルを引っ張り、以下のように作っても、

Dim catDB As ADOX.Catalog = New ADOX.Catalog
Dim tblLink As ADOX.Table = New ADOX.Table

catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Mdb_Link

With tblLink
.Name = "TEST_TBL"
.ParentCatalog = catDB

.Properties("Jet OLEDB:Create Link") = True <---ここと
.Properties("Jet OLEDB:Link Provider String") = Mdb_Test <---ここと
.Properties("Jet OLEDB:Remote Table Name") = "TEST_TBL" <---ここ
End With

catDB.Tables.Append(tblLink)
catDB = Nothing

.Propertiesの3行でエラー(プロパティ'Item'は'ReadOnly'です。)になってしまい、サンプル通りに行きません。
これについて何か心当たりありましたら教えてくださると嬉しいです。

A 回答 (2件)

参考にされたサンプルは、


VB6.0以前のものを対象にしていませんでしたか?
VB2005では、プロパティの省略は誤動作のもとです。

エラーが、
>プロパティ'Item'は'ReadOnly'です。
ということで、
間違ってItemプロパティに代入しようとしたと解釈されているのであれば、

.Properties("Jet OLEDB:Create Link").Value = True
.Properties("Jet OLEDB:Link Provider String").Value = Mdb_Test
.Properties("Jet OLEDB:Remote Table Name").Value = "TEST_TBL"

だとどうでしょうか? 
    • good
    • 0
この回答へのお礼

うおぁああ・・・!
.Valueが出てきました。
できまし・・・た!

感謝です。知識が足りませんでした。

お礼日時:2007/03/08 16:24

ちゃんと調べてはいないのですが、コードを見た感じ、VBから動的にテーブルのリンクを作ろうとしているように見えるのですが(間違ってたらすみません)、リンクしたいテーブルがきまっているのであれば、Accessで前もってリンクテーブルを作っておけばいいのではないでしょうか。


(はずしてたらごめんなさ)
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
おっしゃるとおり、VBから動的に作ろうとしています。
流れとしては、本体起動時にmdbが存在しない場合いくつかのmdbを作成して全てのmdbのテーブルをリンクさせるリンク用mdbを最後に作ろうとしています。
できると思うんですが、なぜかReadOnlyエラーになってしまいます。

お礼日時:2007/03/08 09:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!