Я сталкиваюсь с очень странной проблемой с MS Access. У меня есть некоторый код VBA, используемый в форме сброса пароля. Код хеширует входной пароль, а затем сохраняет хэш в таблице пользователей. Вот соответствующий фрагмент:
If newPW1 = newPW2 Then
MsgBox ("Passwords Match!")
hashPW = Encrypt(newPW1)
MsgBox ("HashedPW is " & hashPW)
updatePW = "UPDATE Users SET Password = " & hashPW & " WHERE Username = pwChangeUsrnm"
DoCmd.RunSQL (updatePW)
MSGbox - мои заметки отладки. Я знаю, что хеш генерирует правильно как длинную цепочку чисел, все хорошо. Когда я захожу в таблицу данных для таблицы «Пользователи», число всегда преобразуется в научную нотацию.
Вот скриншот таблицы данных. bob.smith - это пример того, что я получаю после запуска кода, остальные два - бред, который я ввел вручную. Поле отформатировано как строка, поэтому я не уверен, почему оно даже попытается преобразовать число в SN, если, насколько я могу судить, элемент всегда является строкой.
Я думаю, что ошибка должна закрасться вокруг запроса SQL? Если есть лучший способ сделать это, тогда я весь в ушах.
Заранее спасибо за помощь!
техническое описание
вид конструкции
Полный код, на всякий случай:
Option Compare Database
Private Sub Command84_Click()
Dim hashPW As String
Dim updatePW As String
Dim checkName As String
checkName = Nz(DLookup("Username", "Users", "Username = pwChangeUsrnm"), "aaa")
MsgBox ("checkName set to " & checkName)
If pwChangeUsrnm = checkName Then
MsgBox ("Username Found")
If newPW1 = newPW2 Then
MsgBox ("Passwords Match!")
hashPW = Encrypt(newPW1)
MsgBox ("HashedPW is " & hashPW)
updatePW = "UPDATE Users SET Password = " & hashPW & " WHERE Username = pwChangeUsrnm"
DoCmd.RunSQL (updatePW)
Else
MsgBox ("Passwords Do Not Match!")
End If
Else
MsgBox ("Username not found")
End If
End Sub