【问题标题】:Copying SQL Server query results into an Access 2010 table将 SQL Server 查询结果复制到 Access 2010 表中
【发布时间】:2012-09-04 04:46:57
【问题描述】:

每月,我需要将“新”数据从我们的 SQL Server 业务应用程序获取到包含我们所有“管理报告”的 Access 2010 数据库中。 Access 数据库有一个“临时表”,其中包含报告所基于的原始数据。

我没有 Access 经验,但我建议我们:

  1. 在我们的 SQL Server 上编写一个查询(存储过程?),返回所需的原始数据(...这点很简单。)
  2. 在每个月底,从 Access 2010 中调用 SQL Server 存储过程(...单击按钮?)
  3. 将存储过程的结果保存到 Access 中的临时表中。

但我发现它比我预期的要难。我想我可以在代码隐藏中使用 ADODB 得到一些丑陋的工作,一一循环记录集中的行,然后一一设置列值。但一定有更好的方法:)

  • 我应该如何从 Access 2010 获取 SQL Server 数据? (ADODB?DAO?QueryDesigner?其他?)

  • 是否有我可以利用的“将记录集插入表”(或类似的)机制?

【问题讨论】:

    标签: sql-server-2008 ms-access-2010


    【解决方案1】:

    将相关的 sql server 表或视图链接到 MS Access。使用 MS Access 语法对链接表运行查询并更新临时表。

    还可以在查询中使用 SQL Server 内联连接字符串更新 MS Access 表。

    SELECT *
    INTO   newtable
    FROM   [odbc;filedsn=Z:\DSN\test.dsn].table1
    

    从 SQL Server 端工作,您可以将 MS Access 用作链接服务器或从那里运行查询和更新。

    INSERT INTO
    OPENDATASOURCE(
       'Microsoft.ACE.OLEDB.12.0', 'Data Source=z:\docs\test.accdb')...[table1] 
       ( atext )
    SELECT atext FROM table1 WHERE id=2
    

    【讨论】:

    • “链接相关的 sql server 表或视图”:我的 SQL Server 数据是一个采用日期范围输入参数的长查询。我还能使用这个机制吗?或者它只适用于单个表或视图。
    • “从 SQL Server 端工作”:不错的优雅解决方案...尽管在我的场景中,我们希望使用可以存在于本地 PC 桌面中的 Access DB。即从 SQL Server 端并非不可能,但通过 Access 拉取将是我们理想的解决方案。
    • 在这种情况下,要么根据长查询在 sql server 中创建表,要么在 MS Access 中运行长查询。
    • 感谢 @Remou,非常有帮助 - 仅供参考,我们已经选择了您的第一个选项:我已将存储的 proc 更改为视图,现在可以将 SQL Server 数据拉入 Access。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多