有一个查询中函数转换的问题!(急急急!!!)

3684291 2003-03-23 03:54:53
在一个DBGRID查询中
我用的是set filter
我所用的库中有个字段是日期型 ,在表单中,TEXT设置成字段,然后根据输入的日期,查找一段日期内的数据
set filter to riqi<=ctod(thisform.text1.value) .and. riqi>=ctod(thisform.text2.value)

但是怎么也找不到数据,但是我用直接查找就可以查到
set filter to riqi={^2003.03.23}
请问我用什么办法能解决,输入一段日期就可以查到.另:我在表单的ACTIVE事件中设置了set date ansi
...全文
66 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
流星尔 2003-03-24
  • 打赏
  • 举报
回复
sele tablename
set filt to riqi>=ctod(thisform.txtrqstart.value) and riqi<=ctod(thisform.txtrqend.value) &&这里改一下。
go top
thisform.refresh
刚才中文打不出来
流星尔 2003-03-24
  • 打赏
  • 举报
回复
set date to ymd
set mark to '-'

wait thisform.txtrqstart.value
wait thisform.txtrqend.value

sele tablename
set filt to riqi>=ctod(thisform.txtrqstart.value) and riqi<=thisform.txtrqend.value
go top
thisform.refresh

check your txtrqstart's value is correct and check your table is in the current
workspace,also me your table don't have the records you want to find
boomit 2003-03-24
  • 打赏
  • 举报
回复
1、你得保证你的条件是成立的,别成了空集。你可以在命令窗口用brow命令试试。你的text2的日期要小于Text1的日期,条件才是理论上为.t.,然后还得看库中有没有符合记录的。
2、其实日期型用字符型是可以按时间比较的,你都用两位字符记录日期如:0405表示4月5日,这样比较就没问题的。如‘1008 ’>0405对吧。。。
3684291 2003-03-24
  • 打赏
  • 举报
回复
谢谢各位,我已经找到原因了
我的代码没有问题,是因为我把TEXT2的FORMAT不小心设置为R了,以至我以为是转换函数时出现的问题


再次谢谢各位!
结贴!
3684291 2003-03-23
  • 打赏
  • 举报
回复
我的返回值是一个日期型的数据,但是,比较一个还可以,比较两个就找不到数据

to:方方
如果我吧库里的日期型变成字段型,那我怎么比较大小??我开始也是想这么设了,后来我取了系统日期,就直接存在字段里了。如果变成字段型,那比较时还得转换成数值型吧,存系统日期的时候还得把日期型转换成字段型。

我比较时的问题主要出现在可以比较一个日期,但是加上后面的条件,就是.AND.那段,就查不到数据了。
newfang 2003-03-23
  • 打赏
  • 举报
回复
你先看看你的ctod(thisform.text1.value) 返回的东西是一个什么样的东西……

其实一般没什么必要我倒强烈建议你不要把日期字段搞成日期型,用字符型多好,也
可以比较大小,只是不能做加减运算……
kaicat 2003-03-23
  • 打赏
  • 举报
回复
你为什么不把TEXT设置成日期型,这样就不用函数转换了嘛。
另外用select * from 被查表 where 被查表.日期>=thisform.text1.value and 被查表.日期<=thisform.text2.value into table table_2
这样很好用的,试试看
3684291 2003-03-23
  • 打赏
  • 举报
回复
为什么没有人帮我???

2,722

社区成员

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

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