Запуск строки SQL в VBA? - PullRequest
0 голосов
/ 03 мая 2018

Iv создал строку SQL sql в ms access vba, но при запуске выводит строку в окне отладки, но на самом деле не запускает строку, чтобы добавить запись в таблицу, как я хочу.

Public Sub EmpoyeesTable_Click()

    Dim sql As String

    sql = "INSERT INTO Employees " & _
    "VALUES " & "(1, 'James', 'Dan', 'n6 indro Rd', 0943747, 30.24);"

    Debug.Print sql
End Sub

В конечном итоге я хочу использовать строки SQL для получения ввода из формы при нажатии кнопки «Отправить» и добавления его в таблицу? Это даже правильный подход?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Если вы думаете просто, просто измените Debug.Print sql на DoCmd.RunSQL (sql)

Private Sub Command0_Click()
Dim sql As String

    sql = "INSERT INTO Employees " & _
    "VALUES " & "(1, 'James', 'Dan', 'n6 indro Rd', 0943747, 30.24)"

    DoCmd.RunSQL (sql)
End Sub

Если вы хотите получить значения из формы, тогда присвойте каждое значение из элемента управления формы как текстовое поле. См. Коды ниже.

Private Sub Command0_Click()
Dim sql As String

    sql = "INSERT INTO Employees VALUES (" & _
    "'" & Me.Text1 & "'," & _
    "'" & Me.Text2 & "'," & _
    "'" & Me.Text3 & "'," & _
    "'" & Me.Text4 & "'," & _
    "'" & Me.Text5 & "'," & _
    "'" & Me.Text6 & "');"

    DoCmd.RunSQL (sql)
End Sub

Если значение поля является числовым типом, вы можете удалить одиночную кавычку (') из кода для этого поля.

0 голосов
/ 03 мая 2018

Существует множество способов запуска строк SQL в VBA. У каждого есть свои преимущества и недостатки. Наиболее распространенные из них:

DoCmd.RunSQL sql

Запускает SQL так же, как если бы вы выполняли запрос. Всплывающее окно будет появляться при добавлении, удалении или изменении записей. Вы можете использовать UDF и параметры формы

DoCmd.SetWarnings False
DoCmd.RunSQL sql
DoCmd.SetWarnings True

Отключает предупреждения, затем запускает SQL, как и в предыдущем случае, а затем снова устанавливает предупреждения.

CurrentDb.Execute sql

Выполняет SQL через соединение DAO с текущей базой данных. Вы не можете использовать UDF и параметры формы здесь. Предупреждения не отображаются. Он просто выполняет SQL.

CurrentProject.Connection.Execute sql

Выполняет SQL через соединение ADO с текущей базой данных. Очень похоже на соединение DAO, но есть небольшие различия. Например, вы можете выполнить операторы DDL, которые содержат тип данных Decimal, и таким образом установить ограничения Check, в то время как оба не допускаются ни одним из других способов.

Вы можете прочитать об использовании параметров этими различными способами здесь . Настоятельно рекомендуется, если вы собираетесь вставлять значения, которые не являются постоянными, чтобы избежать ошибок и внедрения SQL.

...