日期:2014-05-17  浏览次数:20729 次

遍历数据库然后判断更新的问题
在写个程序的时候遇到问题,向各位求助。想实现的功能如下:遍历数据库的记录,读取当前记录的4个时间值d1,d2,d3,d4,然后与当前时间today做对比,如果符合条件,则更新该条数据的某一项值。想求教各位如何实现。或者告诉我,我写的哪个地方出现了问题。谢谢。
JScript code

dim Today
Today=date()
set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * form Item"
rs.Open sql,conn,1,3

if rs.RecordCount=0 then
    response.write "当前无数据!"
else
    for i = 0 to rs.RecordCount-1
        if rs.EOF Then Exit For
        date1=dateiff("d",Today,rs("ATime"))//判断与当前日期的差的天数
        date2=dateiff("d",Today,rs("BTime"))
        date3=dateiff("d",Today,rs("CTime"))
        date4=dateiff("d",Today,rs("DTime"))
        if date1>5 then
           set rs1=Server.CreateObject("ADODB.RecordSet")
           Renew="UPDATE Item SET TimeLimit = '1'"    //如果差的天数符合条件,就更新当前记录里面的TimeLimit
           rs1.Open Renew,Renew,1,3
           set rs1 = nothing
    end if
     rs.MoveNext
    next
End if





------解决方案--------------------
执行代码看看有什么问题
------解决方案--------------------
写成存储过程 方便些
declare @today datetime
if(SELECT datediff( day, @today, ATime )……)>5 UPDATE Item SET TimeLimit = '1'

------解决方案--------------------
按你上面的代码,只是让D1在〉5的时候执行更新
你的本意是希望从D1~D4都大于5的时候才执行,还是想d1~d4只要任意一个大于5都执行呢?
如果是d1~d4都大于5的时候执行就:
if date1>5 and date2>5 and date3>5 and date4>5 then
如果是d1~d4任意一个大于5就执行的话就:
if date1>5 or date2>5 or date3>5 or date4>5 then