みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ADO&mdbで、リンクテーブルの作り方

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

ある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'です。)になってしまい、サンプル通りに行きません。
これについて何か心当たりありましたら教えてくださると嬉しいです。

投稿日時 - 2007-03-08 01:17:00

QNo.2812733

すぐに回答ほしいです

質問者が選んだベストアンサー

参考にされたサンプルは、
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"

だとどうでしょうか? 

投稿日時 - 2007-03-08 15:00:30

お礼

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

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

投稿日時 - 2007-03-08 16:24:48

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2007-03-08 02:56:39

お礼

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

投稿日時 - 2007-03-08 09:51:36

あなたにオススメの質問