找回密码
 加入
搜索
查看: 4299|回复: 9

[效率算法] 数据库时间更新问题

  [复制链接]
发表于 2013-10-2 21:34:52 | 显示全部楼层 |阅读模式
求助,数据库时间更新问题,先粘代码:
        $now = _Now()
        $Mssql_Conn = ObjCreate("ADODB.Connection")
        $Mssql_Conn.open("Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=TestDB;Data Source=(Local)\GSQL;")
        $Msql_RS = ObjCreate("ADODB.Recordset")
        $Msql_RS.open("SELECT * FROM hy WHERE LoTime < '" & $now & "'", $Mssql_Conn, 1, 1)
                        While (Not $Msql_RS.eof And Not $Msql_RS.bof)
                        $temp=$temp+1
                        $Msql_RS.Execute("Update HY set LoTime=GETDATE()+30 WHERE LoTime < '" & $now & "'")
                        $Msql_RS.movenext
                WEnd
                MsgBox(0,"","本次延期"&$temp&"会员")
        $Msql_RS.close


查询正常,可以用MSGBOX显示出查到的数据内容,但是更新语句调用时出错,不知道什么原因,特来向坛子里的大大求助,在Q群里问到一位高手说让我加错误回显,但本人实在不知道怎么加错误回显,所以又回来这里求助了!
发表于 2013-10-2 22:12:26 | 显示全部楼层
000000000000000000000
发表于 2013-10-3 09:39:33 | 显示全部楼层
$Msql_RS 这个好像是游标吧,游标能这样更新吗? 没有.Execute这样属性吧
 楼主| 发表于 2013-10-3 10:59:14 | 显示全部楼层
那更新用什么代码更合适呢?
 楼主| 发表于 2013-10-3 11:04:12 | 显示全部楼层
$now = _Now()
        $Mssql_Conn = ObjCreate("ADODB.Connection")
        $Mssql_Conn.open("Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=TestDB;Data Source=(Local)\GSQL;")
        $Msql_RS = ObjCreate("ADODB.Recordset")
        $Msql_RS.open("SELECT * FROM hy WHERE LoTime < '" & $now & "'", $Mssql_Conn, 1, 1)
                        While (Not $Msql_RS.eof And Not $Msql_RS.bof)
                        $temp01=$Msql_RS.Fields(0).value
                        $temp=$temp+1
                        $Msql_RS.Execute("Update HY set LoTime=GETDATE()+30 WHERE kh = '"&$temp01&"'")
                        $Msql_RS.movenext
                WEnd
                MsgBox(0,"","本次延期"&$temp&"会员")
        $Msql_RS.close
这样也是报错误,求各位大神指点指点!
发表于 2013-10-4 09:35:19 | 显示全部楼层
回复 5# 6615840

1.你的 UPDATE 語法  在MYSQL 下可以執行嗎??
2.   GETDATE()+30 的意思是 加一個月嗎??  我不確定可以這樣寫ㄟ
发表于 2013-10-4 09:37:20 | 显示全部楼层
回复 5# 6615840

1.你的 UPDATE 語法  在MYSQL 下可以執行嗎??
2.   GETDATE()+30 的意思是 加一個月嗎??  我不確定可以這樣寫ㄟ
 楼主| 发表于 2013-10-4 14:49:08 | 显示全部楼层
回复 7# kk_lee69


    1.是在SQL下执行的。
   2.GETDATE()+30是可以在企业管理器里运行的,可以正常运行这条语句的!我这里只是引用了在管理器里面能正常运行的代码.
发表于 2013-10-5 03:14:24 | 显示全部楼层
本帖最后由 xayle 于 2013-10-5 03:44 编辑

这个看看可不可以, 试试吧


$now = _Now()
$Mssql_Conn = ObjCreate("ADODB.Connection")
$Mssql_Conn.open("Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=TestDB;Data Source=(Local)\GSQL;")
$Mssql_Conn.CursorLocation = 3
$query = $Mssql_Conn.Execute("SELECT * FROM hy WHERE LoTime < '" & $now & "'")
If Not $query.eof And Not $query.bof Then
        $quer2 = $Mssql_Conn.Execute("Update HY set LoTime=GETDATE()+30 WHERE LoTime < '" & $now & "'") 
        $tmp = $quer2.RecordCount
        MsgBox(0,"","本次延期"&$tmp&"会员")
EndIf
$Mssql_Conn.close



$now = _Now()
$Mssql_Conn = ObjCreate("ADODB.Connection")
$Mssql_Conn.open("Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=TestDB;Data Source=(Local)\GSQL;")
$query = $Mssql_Conn.Execute("SELECT * FROM hy WHERE LoTime < '" & $now & "'")
If Not $query.eof And Not $query.bof Then
        $quer2 = $Mssql_Conn.Execute("Update HY set LoTime=GETDATE()+30 WHERE LoTime < '" & $now & "'") 
        $tmp = $query.GetRows()
        MsgBox(0,"","本次延期"&UBound($tmp)&"会员")
EndIf
$Mssql_Conn.close
 楼主| 发表于 2013-10-5 13:19:50 | 显示全部楼层

RE: 数据库时间更新问题[已解决]

回复 9# xayle


    非常感谢,确实可以实现我的需求!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-3 18:19 , Processed in 0.084905 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表