大家好,我在尝试使用 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 不在询问!!!!但是当我做把它放回查询中代替时钟输入时,它给了我 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' AND theDate = '2010/08/02';
最佳答案
我相信您只需要在原始查询中添加 clockout
,但不应替换 clockin
。在到达注销部分之前,您不必对 clockout
执行任何操作,但它确实需要从一开始就在查询中。
编辑:根据您在评论中给出的错误,听起来问题出在数据库中 clockout 的现有值上。我认为 0000-00-00 00:00:00
可能是问题的根源;尝试使用其他日期,或改用 NULL
。
关于VB6 mySQL更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3385624/