【问题标题】:CopyFromRecordset Fails in Server 2012, but not in Windows 7, or Windows 10 in VBA/ExcelCopyFromRecordset 在 Server 2012 中失败,但在 Windows 7 或 VBA/Excel 中的 Windows 10 中没有
【发布时间】:2019-08-11 19:19:04
【问题描述】:

我有一个 Excel 文档,它使用 ADO 连接到 BASIS 数据库,并使用 SQL 来抓取数据。数据被放入记录集中,然后使用 CopyFromRecordset 显示在工作表上。

此过程在 Windows 7 和 Windows 10 上的 Excel 中运行良好,但是,当我在运行 Windows Server 2012 R2 的终端服务器上运行相同的电子表格时,我收到错误 Method 'CopyFromRecordset' of object 'Range' failed。错误号是-2147417848。

我读过很多帖子,声称问题出在数据太多、列太多或行太多,但我修改了我的查询以在 1 条数据记录中引入 1 个字段,此外,查询与所有数据在 Windows 7 和 10 上都能正常运行。

当我使用 connection.OpenSchema 将信息引入 Recordset 并在工作表上显示该数据时没有问题,但是当我使用 resultset.open 或 connection.execute 引入字段数据时,我每次都会收到错误。

另外,当我在 openschema 记录集中使用 movefirst 和 movenext 等函数时没有问题,但是当我在字段数据记录集上使用这些函数时,Excel 完全崩溃并给出了这些问题的详细信息。

问题签名: 问题事件名称:APPRCASH 应用程序名称:EXCEL.EXE 应用程序版本:16.0.4690.1000 申请时间戳:5acd084f 故障模块名称:BBjODBC.dll 故障模块版本:16.2.4.0 故障模块时间戳:58d03d38 异常代码:c0000005 异常偏移量:0000000000179cc1 操作系统版本:6.3.9600.2.0.0.16.7 区域 ID:1033

我正在使用的代码的相关部分如下。

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset

    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset

    cn.ConnectionString = "DSN=ODBC_RIC;UID=RIC;"
    cn.Open

    cmdText = "select * from prospectmaster"

    'I tried all these open combinations
    'rs.Open cmdText, cn, adOpenDynamic, adLockReadOnly
    'rs.Open cmdText, cn, adOpenForwardOnly, adLockOptimistic
    'rs.Open cmdText, cn, adOpenDynamic, adLockPessimistic
    'rs.Open cmdText, cn, adOpenDynamic, adLockOptimistic
    'rs.Open cmdText, cn, adOpenDynamic, adLockUnspecified
    'rs.Open cmdText, cn, adOpenUnspecified, adLockUnspecified

    'I settled on this one that works everywhere else    
    Set rs = cn.Execute(cmdText)

    ' Display Headers (works Fine)
    For n = 0 To rs.Fields.Count - 1
        Range("A6").Offset(0, n).Value = rs.Fields(n).Name
    Next n

   ' Display the data (does not work fine)
    Range("A7").CopyFromRecordset rs

    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing

我不知道下一步该尝试什么。任何帮助将不胜感激。

【问题讨论】:

    标签: sql excel adodb


    【解决方案1】:

    我发现问题在于我的 odbc 驱动程序是 32 位的,并且只适用于 32 位版本的 Excel。我正在测试它的计算机是 64 位的。我安装了正确版本的 Office,它工作正常。或者,我可以安装正确的驱动程序,它也可以这样工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 2015-11-15
      • 2012-07-17
      相关资源
      最近更新 更多