使用代码连接到链接表。 我有一些来自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服务器的密码。
答案 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版本。