Я получаю сообщение об ошибке в этой строке в моем коде - PullRequest
0 голосов
/ 01 декабря 2019

Я все еще развиваю свою систему управления школой. Я хочу создать несколько имени пользователя и пароля для моей системы. Но я получаю ошибку 31314 Runt в операторе вставки.

CurrentDb.Execute "INSERT INTO users(Username,Password,Email,Mobile,UserType) VALUES('" & Me.uname & "', '" & Me.upass & "', '" & Me.uemail & "', '" & Me.umobile & "', '" & Me.utype & "',)"

Ответы [ 2 ]

3 голосов
/ 01 декабря 2019

Вы можете / должны использовать запрос временного параметра:

  • Оператор sql выглядит намного понятнее
  • Он заботится о типах данных (без ' s)
  • Он предотвращает SQL-инъекцию
With CurrentDb().CreateQueryDef(vbNullString, _
        "INSERT INTO users (Username, [Password], Email, Mobile, UserType) VALUES (p1, p2, p3, p4, p5)")
    .Parameters("p1").Value = Me.uname
    .Parameters("p2").Value = Me.upass
    .Parameters("p3").Value = Me.uemail
    .Parameters("p4").Value = Me.umobile
    .Parameters("p5").Value = Me.utype
    .Execute dbFailOnError
End With

Если вы хотите, вы можете переименовать параметры p1 в p5, чтобы более описательные имена, например, pUName и т. Д.

0 голосов
/ 01 декабря 2019

У вас есть запятая здесь:

"INSERT INTO users(Username,Password,Email,Mobile,UserType) VALUES('" & ... & Me.utype & "',)"
Trailing commma ---------------------------------------------------------------------------^

Вы также должны заключить поле Password в квадратные скобки, поскольку это зарезервированное слово в MS Access:

INSERT INTO users (Username, [Password], Email, Mobile, UserType)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...