| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1210 人关注过本帖
标题:如何求取两个时间段的数据
只看楼主 加入收藏
kimwuhao
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-9-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
如何求取两个时间段的数据
在查询表单中设置两个日期型文本窗,当输入两个日期数值时,求取这两个时间段的数据.如text1为1988.01.01,text2为2010.01.01.表单按键"开始查询"的代码为
public n1,n2
  n1=alltrim(thisform.text1.value)
  n2=alltrim(thisform.text2.value)

  use 表1(其中包含"出生日期"字段)

  do case
     .....
     case n1<=alltrim(出生日期)<=n2
     .....
  endcase
if found()
   do form 表单2
else
   错误提示
endif

运行时提示, n1=alltrim(thisform.text1.value)行的参数类型.数值等不正确

求教其原因及解决方法,
一个初学才的求教,多谢各位的帮忙!!!
搜索更多相关主题的帖子: 时间段 数据 
2010-09-04 08:07
井绳
Rank: 2
等 级:论坛游民
帖 子:97
专家分:69
注 册:2010-6-29
收藏
得分:4 
1、应该使用时间日期型数据
2、使用Between()函数
参考VFP的帮助,非常容易实现
2010-09-04 08:23
kimwuhao
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-9-4
收藏
得分:0 
回复 2楼 井绳
帮忙写个代码吧,多谢了....
2010-09-04 08:27
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:4 
如果时间字段是字符型,在表单的init事件中写入:
 STORE "" TO thisform.text1.value,thisform.text2.Value
 


[ 本帖最后由 qjbzjp 于 2010-9-4 08:36 编辑 ]

相互学习,互相交流,共同提高。
2010-09-04 08:35
kimwuhao
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-9-4
收藏
得分:0 
回复 4楼 qjbzjp
表中"出生日期"为date(日期型)字段,
遇到困难了,各位帮帮忙吧,,,,


[ 本帖最后由 kimwuhao 于 2010-9-4 08:48 编辑 ]
2010-09-04 08:47
pmc1234
Rank: 5Rank: 5
等 级:职业侠客
帖 子:398
专家分:383
注 册:2010-1-6
收藏
得分:0 
可以吧字符型转化为日期型 用函数ctod
2010-09-04 08:59
kimwuhao
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-9-4
收藏
得分:0 
回复 6楼 pmc1234
费劲!
n1<=.........
改为
locate for between(出生日期,n1,n2)
ok了!
自学成才......
2010-09-04 09:06
pmc1234
Rank: 5Rank: 5
等 级:职业侠客
帖 子:398
专家分:383
注 册:2010-1-6
收藏
得分:4 
你的n1 n2是字符型的 出生日期是日期型的 betwween要求是哪个值必须是同一类型的
2010-09-04 09:34
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
在表单的init事件中写入:
STORE "" TO thisform.text1.value,thisform.text2.Value
……
CASE BETWEEN(出生日期,CTOD(n1),CTOD(n2))
……

相互学习,互相交流,共同提高。
2010-09-04 09:45
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:4 
以下是引用kimwuhao在2010-9-4 08:07:57的发言:

public n1,n2
  n1=alltrim(thisform.text1.value)
  n2=alltrim(thisform.text2.value)

  use 表1(其中包含"出生日期"字段)

  do case
     .....
     case n1<=alltrim(出生日期)<=n2
     .....
  endcase
if found()
   do form 表单2
else
   错误提示
endif

如果你的录入框是日期控件, 那么直接:
  n1=thisform.text1.value
  n2=thisform.text2.value

如果你的录入框不是日期控件, 则建议用字符型, 那么:
  n1=ctod(allt(thisform.text1.value))
  n2=ctod(allt(thisform.text2.value))


另外, vfp规则中, 是没有 n1<=alltrim(出生日期)<=n2  这样的数学表达式的~  应为

betw(出生日期,n1,n2)  && 这里的出生日期为日期型~





2010-09-05 15:04
快速回复:如何求取两个时间段的数据
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012709 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved