从Excel查询访问:variables参数

我一直在做深入的function区域仪表板在Excel中刷新最终用户命令的“全部刷新”button。 我遇到的唯一问题是在午夜过后刷新日常生产,从而将“date()”的访问后端查询转换为当天午夜的访问。

这一直是我想要正常工作的条件:根据现在的时间,我要今天或前一天的所有东西> =上午5点。

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

问题在于它以这样一个非常缓慢的速度返回。

我不认为我曾经等过它完成。 我不确定它是否计算在后台表中涉及的每个logging上的逻辑,这将解释locking。

我真的想避免dynamic构build任何逻辑,因为我只是使用Excel通过查询向导调用此Access查询。 我讨厌不得不求助于一个访问button,触发一个模块dynamic地build立查询,然后把焦点放在excel窗口并刷新。

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

有什么想法吗?

我相信parsing到一个布尔HOUR(现在)<5的math等价物应该大大加快了事情。

 WHERE start_time >= (Date + (Hour(Now)<5) + TimeSerial(5, 0, 0)) 

布尔值 True被认为是-1。

这似乎正在工作; 我需要一个正确的连接时间。 古斯塔夫带来了“之间”和“或”。 这对我的离线testing数据库工作正常 – 我将标记为可能的解决scheme。 为了捕捉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语句中构buildnow()条件来决定执行哪个条件!

您可以使用:

 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#)