请教高手关于查询条件的问题

yminhui 2005-05-19 04:30:58
我写的个表单中有个按时间区间查询的功能。
TEXT1中是开始时间,TEXT2是终止时间,如果只在其中一个中填写时间,则相应查询大于开始时间或者小于终止时间的。现在的问题是,当TEXT1为空,TEXT2填入时间后查询小于TEXT2的时间的记录能得到正确结果,但当TEXT2为空,查询大于TEXT1的时间的记录时,就一条记录都不显示了!

程序段如下:
do case
case
thisform.check1.value=1.and.thisform.check2.value=1.and.thisform.text1.value<>" ".and.thisform.text2.value<>" "
set filt to cbsj>=ctod('&data1').and.cbsj=<ctod('&data2').and.like("*&nid*",newsid)
case thisform.check1.value=1.and.thisform.check2.value=1.and.thisform.text1.value<>" ".and.thisform.text2.value=" "
set filt to cbsj>=ctod('&data1').and.like("*&nid*",newsid)
case thisform.check1.value=1.and.thisform.check2.value=1.and.thisform.text1.value=" ".and.thisform.text2.value<>" "
set filt to cbsj=<ctod('&data2').and.like("*&nid*",newsid)
case thisform.check1.value=1.and.thisform.check2.value=0.and.thisform.text1.value<>" ".and.thisform.text2.value<>" "
set filt to cbsj>=ctod('&data1').and.cbsj=<ctod('&data2')
case thisform.check1.value=1.and.thisform.check2.value=0.and.thisform.text1.value<>" ".and.thisform.text2.value=" "
set filt to cbsj>=ctod('&data1')
case thisform.check1.value=1.and.thisform.check2.value=0.and.thisform.text1.value=" ".and.thisform.text2.value<>" "
set filt to cbsj=<ctod('&data2')
case thisform.check1.value=0.and.thisform.check2.value=1
set filt to like("*&nid*",newsid)
case thisform.check1.value=0.and.thisform.check2.value=0
set filt to
endcase
...全文
50 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfwxj 2005-05-20
  • 打赏
  • 举报
回复
代码我懒得看,我只说一下方法,很简单,在你做所有事情之前,加上这两句:

假设sdate为起始时间,edate为结束时间,并且两个文本框的值要预置为日期型

sdate=iif(empt(thisform.text1.value),{^1800.01.01},thisform.text1.value)
edate=iif(empt(thisform.text2.value),{^9999.12.31},thisform.text2.value)

如果你认为你有1800年以前的记录,那你把这个值改得更前
cdbqss1 2005-05-19
  • 打赏
  • 举报
回复
参考下面的这段代码:
rq1=CTOD(THISFORM.text1.VALUE)
rq2=CTOD(THISFORM.text2.VALUE)
tj=''
DO CASE
CASE (NOT EMPT(rq1)) AND ( NOT EMPT(rq2)) &&两上都非空
minrq=MIN(rq1,rq2)
maxrq=MAX(rq1,rq2)
tj=' cbsj>= &minRq and cbsj<= &maxRq '
CASE EMPT(rq1) AND ( NOT EMPT(rq2)) &&第一个空,第二个非空
tj=' cbsj>= &Rq1 '
CASE (NOT EMPT(rq1)) AND EMPT(rq2) &&第一个空,第二个非空
tj=' cbsj<= &Rq2 '
ENDCASE
SET SET FILT TO &tj

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧