【问题标题】:Unable to open Linked Access 2003 table to MS SQL Server in VBA code无法在 VBA 代码中打开到 MS SQL Server 的 Linked Access 2003 表
【发布时间】:2016-10-06 04:41:42
【问题描述】:

我在 Access 2003 中有一个链接到 MS SQL 服务器表的表。 我可以进入 Access 表,手动更新它并查看更改 反映在 MS Sql 服务器表中。

但是,我什至无法打开表格并将结果放入我的 VBA 代码中的记录集中。

Set rs = CurrentDb.OpenRecordset("dbo_tbl_EventLogs", dbOpenTable)

(rs总是一无所有)

同一行代码适用于“本地”访问表。

【问题讨论】:

    标签: sql-server ms-access vba


    【解决方案1】:

    考虑使用dbOpenDynaset 选项,该选项默认用于链接表或存储查询,而dbOpenTable 用于OpenRecordset() 方法中提到的本地表:

    如果您在 Microsoft Access 工作区中打开一个记录集并且您没有 指定一个类型,OpenRecordset 创建一个表类型的 Recordset,如果 可能的。如果指定链接表或查询,OpenRecordset 创建一个动态集类型的记录集。

    Set rs = CurrentDb.OpenRecordset("dbo_tbl_EventLogs", dbOpenDynaset)
    

    【讨论】:

    • 你打败了我,虽然我打算建议... , dbOpenDynaset, dbSeeChanges)
    • 确实,如果链接的 MSSQL 表有标识列,则可能需要根据记录集操作指定 dbSeeChanges
    【解决方案2】:

    您需要使用 ADO 连接到您的数据库。简单易行。只需更改您的信息并享受它。

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    
    ServerName = "yourServer,yourPort(example: 1442)" 'Enter your server name and a port here
    DatabaseName = "yourDBinTheServer" 'Enter your  database name here
    UserID = "yourUserID" 'Enter your user ID here
    Password = "yourPassword" 'Enter your password here
    
    Set rs = New ADODB.Recordset
    Set cn = New ADODB.Connection
    
    cn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=" & DatabaseName & ";Uid=" & UserID & ";Pwd=" & Password & ";"
    rs.open yourQueryAsString, cn
    

    【讨论】:

    • 这将使我直接连接到 MS Sql Server 数据库。我想使用链接表
    【解决方案3】:

    确保存储用于连接数据库的用户凭据... (属性 dbAttachSavePWD)

    【讨论】:

    • 欢迎来到 Stack Overflow!虽然这可能是解决问题的宝贵提示,但答案确实需要证明解决方案。请edit 提供示例代码来说明您的意思。或者,考虑将其写为评论。
    猜你喜欢
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多