使用代码连接到链接表

时间:2009-11-25 12:57:49

标签: ms-access access-vba

使用代码连接到链接表。 我有一些来自SQL服务器的链接表;它们与ODBC连接相关联。密码不随连接一起保存。当我双击Access表视图中的表时,我得到用户名和密码的提示。输入密码后,我可以查看表格中的数据。

我的问题是当我以这种方式打开它之前尝试使用代码访问表时。我尝试做的是使用ADODB打开包含链接表中数据的记录集,如:

Dim rst as new ADODB.Recordset
Dim sql as string
Sql = “SELECT * FROM LinkedTable”
rst.Open sql, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly

在不访问该表之前运行此代码将生成此错误:错误#-2147467259,ODBC:与dns-name的连接失败。

所以,我的问题是,有没有办法用数据库打开时可以运行的代码连接到数据库?这也可以帮助用户,因为他们不必记住SQL服务器的密码。

2 个答案:

答案 0 :(得分:1)

您似乎混合了两种可能无法协同工作的技术,即通过ODBC和ADODB记录集链接表。您是否尝试在链接表上打开DAO记录集?

Dim rst as DAO.Recordset
Dim sql as string
Sql = “SELECT * FROM LinkedTable”
set rst = currentDb.openRecordset(sql,<your parameters>)

您当然可以通过2个ADODB连接使用ADODB记录集,一个连接到您的访问文件,另一个连接到您的SQL服务器:

Dim rsSQL as ADODB.recordset, _
    rsACCESS as ADODB.recordset, _
    connectionSQL as ADODB.connection, _
    connectionACCESS as ADODB.connection

set connectionSQL = New ADODB.connection
set connectionACCESS = New ADODB.connection

connectionSQL.properties(...) = enumerate your SQL parameters
connectionACCESS.properties(...) = enumerate your ACCESS parameters (use currentproject.accessConnection if your access tables are local tables only)

set rsSQl = New ADODB.recordset
set rsACCESS = New ADODB.recordset

rsSQL.open "SELECT * FROM ...", connectionSQL, <other parameters>
rsACCESS.open "SELECT * FROM ...", connectionACCESS, <other parameters>

可以将ADO记录集链接到Access中的表单和组合框。但是,在创建表单时,此技术必须主要通过VBA代码进行管理(您必须编写'on open'事件,例如set me.recorset = ...),而标准的“链接表”技术可以通过用户友好的“表单设计”界面。

答案 1 :(得分:0)

您可以在代码中使用连接字符串,这很容易,看到您已经在使用ADO:http://www.connectionstrings.com/

您需要找出要链接到的SQL Server版本。