Синтаксическая ошибка в выражении UPDATE: значение от String до Double - PullRequest
0 голосов
/ 18 апреля 2019

Я использую следующий код VBA для обновления поля Double в моей базе данных.Имя поля - week, а имя значения, которое нужно добавить, - valore.В моем VBA они оба String переменные.

Когда valore - это число без десятичного знака (например, "15"), у меня нет проблем.

Когда valore - эточисло с десятичным числом (например, «2,5» или «2,5»), я получаю следующую ошибку:

Синтаксическая ошибка в выражении UPDATE

CurrentDb.Execute "UPDATE [Pianificazione risorse] " _
 & "SET " & week & " = " & CDbl(valore) & " " _
 & "WHERE [Codice Progetto] = '" & xCodice_Progetto & "' AND Risorsa = '" & xRisorsa & "';"

1 Ответ

2 голосов
/ 18 апреля 2019

Локализация.

Попробуйте это в ближайшем окне:

? CDbl(1.5)
 1,5 

? CDbl(1,5)
*compile error*

При запуске итальянской версии Access, результаты CDbl при преобразовании в строку имеют десятичную запятую.Но Access SQL всегда ожидает десятичные точки (формат США) для чисел с плавающей запятой.

Вы должны использовать параметры вместо конкатенации строк:
Как использовать параметры в VBA в различных контекстах в MicrosoftAccess?

Если вам действительно нужно, используйте CSql() функцию Густава при объединении переменных с SQL.

... & CSql(CDbl(valore)) & ...
...