【问题标题】:Link SQL Server data to MS Access database with filters使用过滤器将 SQL Server 数据链接到 MS Access 数据库
【发布时间】:2017-04-30 01:44:33
【问题描述】:

我想创建一个从 SQL Server 数据库到 MS Access 数据库的链接以用于报告目的。我不需要表中过去几年的所有数据。有没有办法通过 Access VBA 或 MS Access 工具只引入我需要的行而不是所有行?

【问题讨论】:

  • 是的。您可以通过在 Access VBA 中创建一个作为 PASS THROUGH QUERY 的 QueryDef 来做到这一点。它将参数传递给 SQL Server,并且只返回所需的行。另一种方法是在 SQL Server 上创建一个表,其中包含与表中的列相对应的筛选条件值。您创建一个按此参数表过滤的视图。从 Access 更新参数表中的值以更改视图的结果。
  • 在 SQL Server 上创建一个只返回所需信息的视图也是另一种方法。它还允许您完全忽略此报告不需要的任何数据列。
  • 我会检查 QueryDef 看看它是否提供了我需要的解决方案。谢谢。
  • @LaughingVergil 主要在 MS Access 中创建视图时需要通过 VBA 添加索引,但我确实喜欢视图。

标签: sql-server ms-access vba odbc ms-access-2016


【解决方案1】:

这是一个参数表如何在 SQL Server 中工作的示例,可以从 Access 轻松更新。使用当前用户名和过滤器值更新或插入表,更改视图返回的行。

create table Params ( usrname as nvarchar(100) CONSTRAINT [df_load_date] DEFAULT @@SUSER_NAME , pvalue as nvarchar(100)) Insert into params (pvalue) values ( 'MytableName') Create view vw_test as select * from sysobjects where name in ( Select pvalue from Params where usrname = @@SUSER_NAME)

【讨论】:

    【解决方案2】:

    我与我们的 DBA 进行了交谈。我要创建一个视图。 cloudsafe 感谢您的建议,我只是没有时间研究 Access 中的 QueryDef,但我已将其记下以备将来使用。

    【讨论】:

      【解决方案3】:

      使用外部数据选项卡通过 ODBC 连接到 Access 中的 SQL Server 数据库,并使用 ACCESS 中的 SQL 或创建选项卡上的查询设计器来查询您需要的数据。 SELECT * from TABLE WHERE DATEFIELD > 任何日期

      【讨论】:

      • 这将返回表中的所有行,然后使用 WHERE 子句过滤它们。它可能会导致网络问题和速度缓慢。
      • 您是说导入所有数据并独立查询以获取我需要的行吗?如果是这样,我不想使用这种方法。我只想引入我需要的行,然后我会查询这些行。
      • 您可以访问 SQL SERVER 数据库吗?如果是这样,请在 SQL Server DB 中创建一个视图并通过访问连接到该视图,或者让 DBA 为您创建该视图。
      • 我没有足够的权限来创建视图。
      • 在 SQL 中使用 where 子句不会拉取或抓取所有行然后过滤 - 所以 cansafe 在这个问题上是 100% 错误的。这包括使用 + 在基于链接表的访问客户端中构建查询。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2011-03-28
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多