从Excel查询访问:变量参数

时间:2015-10-26 22:30:09

标签: sql excel ms-access

我一直在深入开展excel中的功能区仪表板,这些仪表板在最终用户命令刷新全部'按钮。我遇到的唯一问题是在午夜过后刷新日常生产,从而改变了访问权限。后期查询' date()'嗯,当天午夜。

这是我想要正常工作的条件:我希望今天或上一天基于NOW时间的所有> = 5 AM。

WHERE start_time >=
   (iif(timevalue(now()) between #00:00# and #4:59#,date()-1,date()))
AND timevalue(start_time) >= #5:00#;

问题是它以如此极慢的速度返回。

我不认为我曾等待它完成。我不确定它是否在后端表中涉及的每个记录上计算这个逻辑,这可以解释锁定。

我真的想避免动态构建任何逻辑,因为我只是使用Excel通过查询向导调用此Access查询。 我不想使用触发按钮触发模块来动态构建查询,然后关注excel窗口并刷新。

在[Form]上创建一个对象会很好!但这仅在表单处于活动状态时才有用..即使这样,SQL也会拒绝表单对象中的任何子计算。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我相信解析到布尔HOUR(现在)<5的数学等价物应该会大大加快速度。

  .menu-highlight-2 {
    @extend .menu-highlight-1;
    $child: 2;
  }

boolean True被视为-1。

答案 1 :(得分:1)

您可以使用:

WHERE start_time 
    (Between Date() - 1 + #05:00:00# And Date() - 1 + #23:59:59#) 
    Or 
    (Between Date() + #05:00:00# And Date() + #23:59:59#)

答案 2 :(得分:1)

这似乎有效;我需要''正确连接时间。古斯塔夫提出了'之间'和'或';这在我的离线测试数据库上工作正常 - 我将这样做标记为可能的解决方案。我还添加了秒,以便捕获23:59:00到23:59:59的最后一分钟数据

        WHERE 

iif(timevalue(now()) Between #00:00# And #4:59#,
(start_time 
 Between Date()-1&' '&#05:00# And Date()-1&' '&#23:59:59#)

  OR

(start_time Between date()&' '&#00:00# And date()&' '&#23.59:59#),

(start_time Between date()&' '&#00:00# And date()&' '&#23.59:59#));

我现在需要在iif语句中构建now()条件以确定要执行的条件!