VB6 mySQL更新问题

时间:2010-08-02 06:54:10

标签: vb6 mysql

嘿所有,我在尝试使用VB6更新mySQL 5数据库中的记录时遇到了一个奇怪的问题。

这是我登录时的代码:

connDB
Set rst = New ADODB.Recordset

strSQL = "SELECT id, fName, lName, theCode, theDate, clockin FROM clockinout WHERE theCode = '" & theUsersUniqueID & "' AND theDate = '" & Format(Now, "YYYY/MM/DD") & "'"
          rst.Open strSQL, conn, adOpenDynamic, adLockOptimistic

If rst.EOF Then
    rst.AddNew
    rst!FName = userFNmae
    rst!LName = userLName
    rst!theCode = theUsersUniqueID
    rst!theDate = Format(Now, "YYYY/MM/DD")
    rst!clockin = Format(Now, "YYYY/MM/DD HH:MM:SS")
Else
    rst!clockin = Format(Now, "YYYY/MM/DD HH:MM:SS")
End If

rst.Update
rst.Close
Set rst = Nothing
conn.Close

这样可以正常运行,没有任何错误。但是,当我使用此代码注销时:

 connDB
 Set rst = New ADODB.Recordset

 strSQL = "SELECT id, fName, lName, theCode, theDate, clockout FROM clockinout WHERE theCode = '" & theUsersUniqueID & "' AND theDate = '" & Format(Now, "YYYY/MM/DD") & "'"
 rst.Open strSQL, conn, adOpenDynamic, adLockOptimistic

 If Not rst.EOF Then
     rst!clockout = Format(Now, "YYYY/MM/DD HH:MM:SS")
 End If

 rst.Update
 rst.Close
 Set rst = Nothing
 conn.Close

它出现了一个错误,说它的EOF,因为它由于某种原因无法找到记录......它在那里因为它在第一次登录时起作用。奇怪的是,当我拿出 clockout 并用 clockin 替换它查找记录但是因为rst而没有更新它!clockout不在查询!!!!但当我将其放回查询中代替clockin时,它会给我EOF错误....

我的数据库记录如下所示:

 ID | fName | lName  | theCode | theDate    | clockin             | clockout         |
 26  Bob     Barker   5810      2010/08/02   2010-08-02 02:44:28   0000-00-00 00:00:00

任何帮助都会很棒,因为我不知道为什么这个简单的更新给了我这么难的时间..

大卫

我也在mysql查询浏览器中测试了查询,一切正常......

SELECT id,fName,lName,theCode,theDate,clockin,clockout FROM clockinout WHERE theCode ='5810'ANDDate ='2010/08/02';

2 个答案:

答案 0 :(得分:0)

我相信您需要的只是在原始查询中添加clockout,但不应该替换clockin。在您到达注销部分之前,您不必对clockout执行任何操作,但它确实需要从一开始就在查询中。

编辑:根据您在评论中提供的错误,听起来问题在于数据库中现有的clockout值。我认为0000-00-00 00:00:00可能是问题的根源;尝试使用其他日期,或使用NULL代替。

http://forums.mysql.com/read.php?37,49727,54030#msg-54030

答案 1 :(得分:0)

id是一个保留字,sql浏览器“帮助”用户的语法,当列命名与保留字冲突时,总是在代码中使用方括号[id]