Команда обновления VB SQL возвращает ошибку «Ошибка времени выполнения 424: требуется объект».

#vb.net #ms-access-2007 #dao

#vb.net #ms-access-2007 #dao

Вопрос:

Вот код:

 Dim tr As Transactions
Set tr = New Transactions

Dim ID As Integer
Dim name As String, username As String, password As String, activate As String

name = cmbName.Value
ID = tr.GetUserID(name)

If (AccountActivated = True) Then
    username = txtUsername.Value
    password = txtPassword.Value
    MsgBox name amp; " " amp; username amp; " " amp; password
    activate = "Yes"
Else
    username = ""
    password = ""
    activate = "No"
End If

tr.UpdateAccount name, username, password, activate 'ERROR HERE: Object required
  

Вот функция, которую я вызываю:

  Public Function UpdateAccount(ByVal name As String, ByVal username As String, ByVal password As String, ByVal activation As String)
        Call connectDB
        sSQL = "update User set Username = '" amp; username amp; "', Password = '" amp; password amp; "', AccountActivated = '" amp; activation amp; "' where Name = '" amp; name amp; "'"
        MsgBox sSQL
        db.Execute sSQL
 End Function
  

Комментарии:

1. Какое именно сообщение об ошибке вы получаете? И вам определенно следует использовать Parameters для привязки значений username , password , activation и user .

2. Ошибка времени выполнения 424: требуется объект

3. Какой синтаксис для этого, чтобы я мог попробовать? Спасибо!

Ответ №1:

Почему здесь вы используете «db», а в другом вопросе «CurrentDb»? Всегда кодируйте, используя параметр явно.

И почему функция, измените на sub, я не помню, может ли это вызвать проблему.

Но самое главное, не используйте текст, введенный из текстовых полей, для построения строки sql, это упрощает использование SQL-инъекции, используйте параметры.

Комментарии:

1. Если вы переключаетесь с функции на Sub, строка становится красной. Кроме того, как мне затем выполнить параметры для SQL? Спасибо!

2. извините.. думаю, dao не поддерживает параметры, вам пришлось бы использовать набор записей. другой способ — очистить строку, чередуя возможный код sql-инъекции, такой как апострофы

3. Но ваш «Требуемый объект», вероятно, является неправильным именем переменной. Включите параметр явно, и вы должны его увидеть.

4. О, проблема решена! Мне просто пришлось изменить ‘db’ на ‘CurrentDb’ 🙂