Привет всем, у меня возникла странная проблема с попыткой обновить запись в моей базе данных mySQL 5 с помощью VB6.Проблема с обновлением mySQL VB6
Это мой код, когда я войти:
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 it НАЙТИ ЗАПИСЬ, но не может обновить его, так как 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 Query Browser, и все работает отлично ...
SELECT id, fName, lName, theCode, theDate, clockin, clockout FROM clockinout WHERE theCode = '5810' AND theDate = '2010/08/02';
В ваш первый пример, когда у вас нет строки, вы заполняете все столбцы, а затем используете 'UPDATE'. Создает ли это обновление строку? Я не уверен, что это так; и если это не так, оно может показаться успешным, но не обновило строки. Но мои знания об ADO были в основном почерпнуты от этих двух превосходных преподавателей, мистера Кости и г-на Паста, поэтому возьмите это предложение за все, что стоит. –