Office中国论坛/Access中国论坛
标题: 日期查询?? [打印本页]
作者: waltonw 时间: 2003-2-10 23:49
标题: 日期查询??
看了很多的旧帖,还是未能明白,特来求教,
在一个查询中,有多个查询,例如人员查询,金额查询等,但是建立了时间段查询后,就是Between,And, 不键入日期,就不能生成结果,用了Between #[FORMs]![Text1]![起始日期]# And #[FORMs]![Text1]![终止日期]#,系统提示表达式出错,用了 Between (((Like[FORMs]![Text1]![起始日期] And Like([FORMs]![Text1]![终止日期]),也未能成功,希望各位高手能指点一二。
作者: zhengjialon 时间: 2003-2-10 23:57
用Between [FORMs]![Text1]![起始日期] And [FORMs]![Text1]![终止日期],只要用户输入的日期格式正确就应该行了。
作者: 我要飞 时间: 2003-2-11 00:05
有时加三组小括号在控件上比较保险。
[此贴子已经被作者于2003-2-10 16:05:06编辑过]
作者: waltonw 时间: 2003-2-11 00:30
谢谢两位的答复,但是我所要求的是,就是不键入日期,根据其他的查询条件也能够生成结果,现在其他都实现了,唯独日期这儿不行,如果不键入日期,就无法生成结果。3种方式都用过了,都无法实现,故特来求助。
作者: waltonw 时间: 2003-2-11 04:12
没人知道吗?
作者: 哈瘌子 时间: 2003-2-11 08:33
我帮忙顶一下
作者: utiger 时间: 2003-2-11 18:36
你现在的问题是[起始日期]和[终止日期]里面没有数据,那你就想办法给他赋上你要的日期不就得了。
作者: Imain 时间: 2003-2-11 18:38
他的问题是不键入时间这个条件 也可以执行查询
作者: utiger 时间: 2003-2-11 19:30
他是想“根据其他的查询条件也能够生成结果”,又要引用到窗体文本框空件,那就必须在文本框中输入时间,不一定要“键入”,可以用 ControlSource 和 defaultvalue 直接给它赋值。
作者: zhengjialon 时间: 2003-2-11 20:00
你在窗体中默认[起始日期]和[终止日期]一个为最大一个为最小如:1900-1-1到2099-1-1日不就行了。
作者: waltonw 时间: 2003-2-11 20:02
能详细的举个例子吗?我在窗体控件的Defaultvalue中分别输入日期,但还是没用。
作者: zhengjialon 时间: 2003-2-11 20:38
永远不要让控件为NULL,控件更新后事件过程中写:
IF ISNULL(ME。控件) THEN
ME。控件=“1900-01-01”(或“2099-01-01”)
END IF
注意两个控件都有要写名称要改掉。
作者: allychen 时间: 2003-2-11 21:09
你可以用vba代码进行查询,在生成查询语句时确定日期控制件是否为空或是否为非日期型数据,比如:
dim stSQL as string
if not isnull(me.控件1) and not isnull(me.控件2) then
stsql="select * from 表 where 表.日期字段 between =#" & me.控件1 & "# and # "& me.控件2 & "#;"
else
stsql="select * from 表 where 其它条件;"
endif
me.list1.rowsource=stsql
me.list1.requery
[此贴子已经被作者于2003-2-11 13:09:20编辑过]
作者: waltonw 时间: 2003-2-12 00:37
请问如果用VBA代码执行查询,那么例如根据其他的条件结合日期查询,是否写在"stsql="select * from 表 where 其它条件"之后,请指点一二。谢谢!
作者: zhengjialon 时间: 2003-2-12 01:17
是的要写的。
作者: waltonw 时间: 2003-2-12 01:36
板主,能否在查询中用准则来设置呢?还是用SQL呢?我不太熟悉VBA,能否再次帮忙指点。
作者: zhengjialon 时间: 2003-2-12 01:40
在查询中只能用我的方法,用VBA可用allychen的方法。
作者: Imain 时间: 2003-2-12 03:26
说的有道理
作者: waltonw 时间: 2003-2-12 05:23
版主,您好!
我在查询的准则中输入Between [FORMs]![Text1]![起始日期] And [FORMs]![Text1]![终止日期],然后在窗体上设置一个复选框,在复选框的更新事件中写入
IF ISNULL(ME.起始日期) THEN
ME.起始日期=“1900-01-01”
END IF
IF ISNULL(ME.终止日期) THEN
ME.终止日期=“2099-01-01”
END IF
但还是不行,不知何故???
作者: waltonw 时间: 2003-2-12 05:56
多谢各位,已经解决此问题。
作者: zeclmj 时间: 2003-2-24 19:45
他好象不是这个意思。
请看我的问题:
Dim Date1 As Date
TempSQL = "select * into 临时数据 from 销售回笼 where "
Date1 = CDate(Me.文本9.Value)
TempSQL = TempSQL + " 销售日期>=" & Date1
DoCmd.RunSQL TempSQL
请高手指点。
我这样好象也不行。
作者: Roadbeg 时间: 2003-2-24 19:52
如果 me.文本9.value 为空的话,你这段程序就会出错.建议增加 nz() 函数以设置默认日期,比如 1899-12-30
作者: CCLCCL 时间: 2003-2-25 20:22
聪明!!
在查询中加条件IIF()
作者: yachtz 时间: 2003-2-27 23:52
版主的发言才说到了点子上!!!!
if isnull(起始日期) then 起始日期=足够小的日期
if isnull(终止日期) then 终止日期=今天
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |