Как использовать переменную VBA в SQL строке? Ошибка ввода значения параметра - PullRequest
0 голосов
/ 07 февраля 2020

Я получаю всплывающее окно с запросом значения параметра для значения CXIid

Введите значение параметра
для CXI00012.

Я пытался ' " & CXIid & " ' но тогда я получаю результат обновления 0 строк. Однако, когда я помещаю значение в предложение where или в приглашение Enter Parameter Value, я получаю обновленную правильную строку.

Как мне заставить его распознавать CXIid как значение?

Private Sub cmdSave_Click()

Dim CXIid As String
Dim testSQL As String

CXIid = Form_sf_ParticipantView.CXI_ID

testSQL = "UPDATE [tbl_Participants]" & _
            "SET tbl_Participants.Consent = (Forms.frmReturn.cboConsent.value)" & _
            "WHERE ((tbl_Participants.CXI_ID = " & CXIid & " ));"

DoCmd.RunSQL testSQL

1 Ответ

0 голосов
/ 07 февраля 2020

У вас есть несколько различных типов ошибок ... переменные не могут быть в кавычках, и поскольку поле CXI_ID является String, оно делает нужны кавычки.

Предполагается, что поле Consent равно цифре c, а поле со списком также возвращает значение нумерации c.

testSQL = "UPDATE [tbl_Participants]" & _
          " SET tbl_Participants.Consent = " & Forms.frmReturn.cboConsent.value & _
          " WHERE tbl_Participants.CXI_ID = '" & CXIid & "'"

Также обратите внимание на пробелы I добавлено до SET и WHERE. Это важно.

Используйте MsgBox testSQL или Debug.Print testSQL, чтобы дважды проверить, на что установлено значение testSQL, прежде чем запускать его.

Если поле CXI_ID не является строка, но вы просто используете строку в качестве типа переменной, по какой-то причине содержащей значение:

testSQL = "UPDATE [tbl_Participants]" & _
          " SET tbl_Participants.Consent = " & Forms.frmReturn.cboConsent.value & _
          " WHERE tbl_Participants.CXI_ID = " & CXIid 

Если они обе строки:

testSQL = "UPDATE [tbl_Participants]" & _
          " SET tbl_Participants.Consent = '" & Forms.frmReturn.cboConsent.value  & "'" & _
          " WHERE tbl_Participants.CXI_ID = '" & CXIid & "'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...