2010-09-23 59 views
3

我测试的Access-VBA控制过程的错误处理:如何模拟ODBC超时错误?

  1. 脚本的访问“控制器” DB开始。
  2. 脚本在第二个访问文件('数据库')中启动一个宏。
  3. '数据库'文件中的宏运行一堆可以查询的数据。
  4. 这些查询从链接到ODBC源的表(实际上是SQL-Server)中提取。

当这个过程在清晨运行,有时查询超时。今天,我更新了控制器脚本中的错误处理,所以我想模拟一个超时错误。

我已经看了MS Access中的ODBC管理员和高级选项,但我没有找到我需要的东西。想法?

回答

2

在设计视图中打开您的宏。在查看菜单下,选择属性。 它应该是一个超时属性,将其设置为一个短值并进行测试。

+0

好主意,但没有奏效。我认为该属性仅在服务器未能响应之后才会使用*。 – PowerUser 2010-09-23 16:29:00

0

在您的SQL查询中添加以下语句 - 它应该会导致超时。

--waits for 5 mins 
    WaitFor Delay '00:05' 

或者,如果您不想修改现有查询,可以在宏查询的其中一个表上运行此操作。这将锁定表3分钟

begin transaction 

Select * 
From MyTable with (TABLOCKX) 
--wait for 3 min 
WaitFor Delay '00:03' 

rollback transaction 
+0

我在传递查询中使用您的事务示例,但它始终提示我输入数据源。我如何将数据源放入交易中? – PowerUser 2010-09-23 16:50:40

+0

@PowerUser - 你不能在SSMS查询窗口中运行这个查询吗?说实话,我不太了解MS Access。 – codingbadger 2010-09-23 16:53:29

+0

对不起,我甚至不知道SSMS查询窗口是什么。很确定Access没有它。 – PowerUser 2010-09-23 17:05:42

0

如果您的查询是修改,您可以添加一个调用WAITFOR的触发器。 Described here.

1

重:有时查询超时。

确保为ODBC超时查询属性被设置为零,因此它不会产生错误,但继续运行。

+0

+1是个好主意。但是如果我这样做了,我的报告就会互相支持。 – PowerUser 2010-09-23 16:30:53

+0

如果它们在宏中或代码中被顺序调用,则不适用。他们是否依赖彼此的结果? – Beth 2010-09-23 16:35:07

+0

如果我连续运行它们,并且第一份报告延迟了一个小时,那么之后的所有报告都将被延迟。我宁愿第一份报告在几分钟后放弃,继续下一步。 – PowerUser 2010-09-23 16:40:24