设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

ACCESS 用链接表方法链SQL SERVER

1970-1-1 08:00| 发布者: Grant| 查看: 5059| 评论: 0

在 Access 2000 中使用 ADOX 来创建链接表的体会
如果要以 SQL Server 作为后端, 可在 Access 中链接 SQL Server 的表. 但是, 若想要在应用中动态地改变这一链接 (有时的确需要这么做), 就必须用 VBA 来创建和/或更改链接表. 我查阅了 MSDN, 但只发现用 ADOX 或 DAO 来创建表的内容, 而没有涉及到链接表, 所以一直解决不了.

最近看了一本书, "Access 2002 开发实用全书", 是电子工业出版社出版的. 其中的 7.4 节 "用 ADOX 定义数据" 恰好讲到了如何用 ADOX 创建链接表, 虽然其后端仍然是 Access 表, 还是有很大的参考价值. 然而按照书上的代码, 却不能得到预期的结果, 被创建的表没能正确地链接, 也打不开. 书上的代码如下:
-----------------------------------------------------------------------
'首先引用 Microsoft ADO Ext. 2.5 For DDL and Security 库, 然后就能使用
'ADOX 类库了.

Option Compare Database
Option Explicit

sub CreateLinkTable()
Dim cat As ADOX.Catalog
Set cat = New ADOX.Catalog
cat.ActiveConnection = CurrentProject.Connection
Dim tbl As ADOX.Table
Set tbl = New ADOX.Table
tbl.Name = "供应商_Linked"
Set tbl.ParentCatalog = cat

tbl.Properties("Jet OLEDB:Link Datasource") = "C:\Program " & _ "Files\Microsoft Office\Office\Samples\Northwind.mdb"
tbl.Properties("Jet OLEDB:Remote Table Name") = "供应商"

cat.Tables.Append tbl

Set tbl = Nothing
Set cat = Nothing
End Sub
-----------------------------------------------------------------------

程序可以运行, 不会出错, 但创建的表没有正确地链接, 也无法打开. 究竟是什么原因呢? 经过整整一晚的"研究", 终于找到了答案, 原来漏掉了最关键的一行代码!

我在调试窗口中测试了从 tbl.Properties(0).name 直到 tbl.Properties(9).name 的所有值, 发现 Jet OLEDB:Link Datasource 是 4, Jet OLEDB:Remote Table Name 是 6, 这两个属性我都设对了. Jet OLEDB:Provider String 是 5, 这个属性是针对象 SQL Server 这样的远程数据库的, 如果后端是 Access 就用不着. Jet OLEDB:Create Link 是 8, 我觉得这个是最关键的, 马上测试了 tbl.Properties(8).Value, 发现是 False, 心中立刻升腾起莫名的喜悦!

我往程序里添加了一行代码:
tbl.Properties(8) = "True"

......

有兴趣的朋友可以试一下链接 SQL Server 的表, 也可以试试更改链接. 我这里就算是抛砖引玉了




最新评论

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-4 05:33 , Processed in 0.053442 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部