Невозможно обновить таблицу с помощью запроса SQL в Access - PullRequest
0 голосов
/ 30 апреля 2020

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

Я хочу обновить некоторые данные в существующей таблице, но она выполняется без обновления.

Имена полей таблицы:

  • [Service Aquired on]
  • [Следующая услуга должна быть включена]
  • [Общая полученная сумма (кр)]
Dim sao As Date
Dim nso As Date
Dim tap As Currency

sao = Nz(Me.Service_Aquired_on.Value, 0)
nso = Nz(Me.txt_NSDO.Value, 0)
tap = Nz(Me.txt_tatp.Value, 0)

DoCmd.RunSQL "UPDATE Service_MasterData SET([Service Aquired on],[Next Service due on],[Total Amount Received(cr)])" & "VALUES ('" & sao & "', '" & nso & "','" & tap & "')"

Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Синтаксис вашего запроса на обновление MS Access неверен, общий синтаксис:

update [table]
set [field1] = [value1], [field2] = [value2], ...

Следовательно, ваш запрос может стать:

DoCmd.RunSQL _
"UPDATE Service_MasterData " & _
"SET " & _
"    [Service Aquired on] = '" & sao & "', " & _
"    [Next Service due on] = '" & nso & "'," & _
"    [Total Amount Received(cr)] = '" & tap & "'"

Однако * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *, и это может привести к прерыванию работы вашего приложения. пользователь предоставляет данные, которые включают зарезервированные символы, такие как разделители строк в одинарных кавычках.

В связи с этим вам следует рассмотреть возможность использования параметров, например:

With CurrentDb.CreateQueryDef("","update service_masterdata set [Service Aquired on] = @sao, [Next Service due on] = @nso, [Total Amount Received(cr)] = @tap")
    .Parameters("@sao") = sao
    .Parameters("@nso") = nso
    .Parameters("@tap") = tap
    .Execute
End With
1 голос
/ 30 апреля 2020

Правильный синтаксис SQL для оператора обновления:

UPDATE Table
SET Column1 =  'Value1'
   ,Column2 = 'Value2'

Так что в вашем случае это будет

"UPDATE Service_MasterData SET [Service Aquired on] ='" & sao & "' ,[Next Service due on] ='" & nso & "' ,[Total Amount Received(cr)] ='" & tap & "'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...