【发布时间】:2014-11-28 15:06:42
【问题描述】:
我有一个非常常见的设置,客户端运行的本地数据库 Access 2013 .accde,有一些本地表,但主要是链接表和视图在他们公司的 Microsoft SQL Server 2005 上运行。
其中一个视图应根据 order_type(订单表中的一个字段)过滤订单。目前还没有,要实现过滤控制。
视图,我们称之为 viewOrderFilter,必须是“动态的”。我想我会通过使其与视图查询中的 order_type 字段匹配到数据库变量来实现这一点。
如何使用 VBA 代码将 @var_OrderFilter 设置为一个值,以便可以将 WHERE order_type=@var_OrderFilter 添加到视图的查询中?
编辑: 这是有效的语法吗?这些可以执行查询还是必须是存储过程或类似的?在代码中,我希望测试一个 int 是否可以设置为 NULL,但不幸的是,如果我在 Microsoft Server Management Studio 的任何地方输入这个,程序就会崩溃,所以我不能在那里“尝试”任何东西。
DECLARE @var_OrderFilter INT
SET @var_OrderFilter=NULL
感谢您的建议。
【问题讨论】:
-
你不能像那样参数化视图,改用函数。
-
是的,通过了解视图、存储过程和函数来获得使视图动态化的方法,我发现了这一点。原因是该视图是全局使用的,现在应该为所有使用它的查询使用全局的每用户“开关”(不必使用它遍历所有 VBA 函数,分析它们并在适用的地方添加一个 WHERE 和检查正在运行的业务系统中是否存在不希望的副作用)。我发现这样做的唯一全局方法是向每个用户表字段添加内部连接,这会减慢视图速度。添加您的评论作为答案,我会接受!
标签: sql-server vba server-variables