回答

收藏

Access 2007:查询两个短期期值之间DateTime字段

技术问答 技术问答 134 人阅读 | 0 人回复 | 2023-09-13

我有一张表格,包括两个文本框供用户输入。两个文本框的属性格式都设置为短期。一个是开始日期,另一个是结束日期。我还有几个表,每个表都有一个DateTime字段(“studystartdatetime)。我希望能查询这些表格,但结果仅限于DateTime字段介于输入日期(含)之间的行。目前的条件是:
9 x$ N# V2 G. C, x  ^2 \) r  k' WWHERE s.studystartdatetime BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddate但是,这不会回到指定的结束日期。. c" J& n, g1 e( l, p) B
我试过将军CDate,Format和DateValue每个组合都包装在一个或所有这些字段中,但我总是收到同样的神秘错误:7 k$ E6 \! y7 E2 ^, J0 Z
表达式输入错误,或过于复杂,无法寻求价值。例如,数字表达式可能包含太多复杂的元素。试着简化表达式,将表达式的一部分分配给变量。
: y6 n, `2 F3 {
一些我尝试过的条件示例:" T+ p. a% h! {# }
WHERE CDate(Format(s.studystartdatetime,"yyyy/mm/dd")) BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddateWHERE DateValue(Format(s.studystartdatetime,"yyyy/mm/dd")) BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddateWHERE CDate(Format(s.studystartdatetime,"yyyy/mm/dd")) BETWEEN CDate(Format(forms!frmMain!txtstartdate,"yyyy/mm/dd")) AND CDate(Format(forms!frmmain!txtenddate,"yyyy/mm/dd"))WHERE DateValue(Format(s.studystartdatetime,"yyyy/mm/dd")) BETWEEN CDate(Format(forms!frmMain!txtstartdate,"yyyy/mm/dd")) AND CDate(Format(forms!frmmain!txtenddate,"yyyy/mm/dd"))WHERE DateValue(Format(s.studystartdatetime,"Short Date")) BETWEEN forms!frmMain!txtstartdate AND forms!frmmain!txtenddate等等。
" }8 x- Z# C' ?1 J5 e) h任何对此的投资都将不胜感激
: w1 E) U* s) E; M9 X                                                               
, s1 j6 `0 w# m7 m) R, t    解决方案:                                                               
& k2 E9 u  b# l( \                                                                在用户输入当天的午夜,发生了您输入的短日期datetime值。因此,2009年的范围-1-1到2009-1-10(或系统中使用的任何短期格式)正在从1月1日开始搜索
+ A$ ]: s* t+ V) d8 _开始    到1月10日 开始    事件,但不包括发生在1月10日晚些时候。- D9 ~5 t5 ~) \
如需更正,请在用户输入搜索结束前添加1。搜索时间从1月1日开始到1月11日,包括1月10日的所有事件。
' m7 V$ {+ Y7 U1 D: T最终,发生在1月11日午夜 恰好    事件可以这样进入你的结果,所以你应该使用它BETWEEN而不是* q* v  E! g: [' y' ~# g
studystartdatetime >= forms!frmMain!txtStartDate AND studystartdatetime
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则