2016-12-14 54 views
0

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

+1

是的。您可以通过在Access VBA中创建一个通过QUERY的PASS QueryDef来完成此操作。它将参数传递给SQL Server,并只返回所需的行。 另一种方法是在SQL Server上创建一个表,其中包含与表中的列对应的过滤条件值。您创建一个由此参数表过滤的视图。从Access更新参数表中的值以更改视图的结果。 – cloudsafe

+2

在仅返回所需信息的SQL Server上创建视图也是实现此目的的另一种方法。它也可以让你完全忽略任何你不需要这个报告的数据列。 –

+0

我将检查QueryDef并查看是否提供了我需要的解决方案。谢谢。 – BrownEyeBoy

回答

0

我跟我们的DBA。我将创建一个视图。云安全感谢您的建议,我只是没有时间去调查AccessDef的QueryDef,但我已经记下了它的未来可能的用法。

-1

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

+0

这将返回表中的所有行,然后使用WHERE子句过滤它们。它可能导致网络问题和缓慢。 – cloudsafe

+0

你是说导入所有的数据并独立地查询它以获得我需要的行吗?如果是这样,我不想使用这种方法。我只想引入我需要的行,然后我将查询这些行。 – BrownEyeBoy

+0

你有权访问SQL SERVER数据库吗?如果是这样,请在SQL Server数据库中创建一个视图,并通过访问连接到视图,或者让DBA为您创建视图。 – niemoy

0

这是一个参数表如何在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)

相关问题