循环没起所用?

susanxiaoshan 2003-01-28 06:50:30
rs.MoveFirst
date1 = rs!交接日期
t = DateDiff("d", date1, today)
i = 0
Do While rs!返回日期 = Null And DateDiff("d", date1, today) <= 15 And Not rs.EOF
i = i + 1
rs.MoveNext
Loop
我怎么最后返回的i值还是0阿。我数据库里满足条件的记录有很多阿!怎么循环没起作用呢?
...全文
43 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
leskey 2003-01-29
  • 打赏
  • 举报
回复
rs.MoveFirst
date1 = rs!交接日期
t = DateDiff("d", date1, today)
i = 0
Do While Not rs.EOF and not rs.bof
if rs!返回日期 = Null And DateDiff("d", date1, today) <= 15 then
i = i + 1
end if
rs.MoveNext
Loop
leskey 2003-01-29
  • 打赏
  • 举报
回复
你的rs.movenext放的位置不对。比如第一条纪录不满足条件的话,情况会怎么样你看好了。。。。。。

建议将判断条件拿到while语句中用if 来判断!
lxcc 2003-01-29
  • 打赏
  • 举报
回复
Do While rs!返回日期 = Null And DateDiff("d", date1, today) <= 15 And Not rs.EOF

rs!返回日期 = Null ?
应该isnull(rs!返回日期)
佛的光辉 2003-01-29
  • 打赏
  • 举报
回复
关于这个问题,看看vb中关于=比较符的说明和isnull函数的说明你就明白了
在=比较符中如果expression1 or expression2 = Null,那么这了表达是返回子就是NULL,一般来讲NULL为false
佛的光辉 2003-01-29
  • 打赏
  • 举报
回复
请用isnull(rs!返回日期)判断
佛的光辉 2003-01-29
  • 打赏
  • 举报
回复
rs!返回日期 = Null
我估计是这句重视返回false
XLYT 2003-01-29
  • 打赏
  • 举报
回复
只要有一个条件不满足,就不做循环,你还是查查吧。
benxie 2003-01-29
  • 打赏
  • 举报
回复
只有去调试呀,其它没办法呀。
看每一个条件是不是满足。
programart_life 2003-01-29
  • 打赏
  • 举报
回复
20分的帖子我就不作试验了。给你一些思路吧

基本上还是和我前面说的一样。没有满足条件的记录。
开始时,我没有仔细看,原来你全用的AND运算,那么条件中只要有一个为假就不能会执行循环体。

你跟踪进去,看看,你的记录集是否为空。其次,你从数据库中取出某条指定的你认为满足你设定的条件(即:能让程序执行循环体)的记录,然后你看看Select出来的,其Date是否为NULL(如果你指定的是NULL的那条记录的话),并且判断日期差。

and 是与逻辑运算。在进行上面的逻辑运算是,可以简单看作相当于数学中的乘法。也就是说只要有一个条件为假,你的循环体就无法执行。

上面是你调试程序时,首先测试的。如果确认条件不会有错。那么就看你的查询语句是否存在错误,这个错误数据库里并不认为是错误,也就说不是语法错误,而是逻辑错误。

仔细瞧瞧吧,跟踪是必要的。
susanxiaoshan 2003-01-28
  • 打赏
  • 举报
回复
调试出来,这个sql语句更不对了。语法是这样的吗?
northwolves 2003-01-28
  • 打赏
  • 举报
回复
cnn.open......
dim thedate as date
thedate=dateadd("d",date(),-15)",
rs.open"select * from table where isnull(返回日期) and 交接日期 between thedate and date()",cnn,3,3
msgbox rs.recordcount
susanxiaoshan 2003-01-28
  • 打赏
  • 举报
回复
用dateadd和datediff的功能不是差不多吗?好像sql语言不能识别datediff这类函数吧,最多只能返回由此函数得到的一个具体的值.
northwolves 2003-01-28
  • 打赏
  • 举报
回复
cnn.open......
rs.open"select * from table where isnull(返回日期) and 交接日期>= dateadd("d",date(),-15)",cnn,3,3
msgbox rs.recordcount
susanxiaoshan 2003-01-28
  • 打赏
  • 举报
回复
意思是说我的记录里没有能满足以上全部条件的记录吗?
可是,有很多阿!
programart_life 2003-01-28
  • 打赏
  • 举报
回复
你所使用的当型循环。只有条件满足时,循环体才能执行。i最后仍然为0,估计是你的条件中,至少一个条件是非真值。所以循环体没有被执行。

你跟踪进去看看,就会知道的

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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