6615840 发表于 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

auto 发表于 2013-10-3 09:39:33

$Msql_RS 这个好像是游标吧,游标能这样更新吗? 没有.Execute这样属性吧

6615840 发表于 2013-10-3 10:59:14

那更新用什么代码更合适呢?

6615840 发表于 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
这样也是报错误,求各位大神指点指点!

kk_lee69 发表于 2013-10-4 09:35:19

回复 5# 6615840

1.你的 UPDATE 語法在MYSQL 下可以執行嗎??
2.   GETDATE()+30 的意思是 加一個月嗎??我不確定可以這樣寫ㄟ

kk_lee69 发表于 2013-10-4 09:37:20

回复 5# 6615840

1.你的 UPDATE 語法在MYSQL 下可以執行嗎??
2.   GETDATE()+30 的意思是 加一個月嗎??我不確定可以這樣寫ㄟ

6615840 发表于 2013-10-4 14:49:08

回复 7# kk_lee69


    1.是在SQL下执行的。
   2.GETDATE()+30是可以在企业管理器里运行的,可以正常运行这条语句的!我这里只是引用了在管理器里面能正常运行的代码.

xayle 发表于 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

6615840 发表于 2013-10-5 13:19:50

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

回复 9# xayle


    非常感谢,确实可以实现我的需求!
页: [1]
查看完整版本: 数据库时间更新问题