Ошибки, дополняющие таблицу в Access VBA - PullRequest
2 голосов
/ 15 марта 2020

У меня есть база данных Access с модулем VBA, который собирает строку JSON в переменную: JsonStr2, которую я хочу поместить в простую таблицу: JSONforAPI с двумя полями:

  • ID = автоматический номер и
  • JSON = длинная строка.

Действительный JSON и Jsonstr2 выводится в непосредственном окне на Debug.Print .

Когда я запускаю строку кода:

DoCmd.RunSQL "INSERT INTO JSONforAPI (JSON) VALUES (" & Jsonstr2 & ")" 

Я получаю:

Ошибка времени выполнения '3075' Неправильный GUID в выражении запроса '{' order ": {" CustomerID ":" 19" .»

При нажатии «Справка» я получаю:

Эта команда недоступна. Администратор вашей организации отключил службу, необходимую для использования этой функции.

Я получаю то же самое, даже если создаю Def Query Def.

Я был бы очень признателен, если бы кто-то мог сказать мне что не так.

Ответы [ 2 ]

3 голосов
/ 15 марта 2020

Поскольку вы объединяете свое значение с остатком от вашего оператора SQL, ни один из разделителей или других специальных символов в строке, содержащей Jsonstr2, не будет экранирован, и, следовательно, вы получите все виды искаженных символов. Строки внутри оператора SQL.

Вместо этого следует использовать параметры, чтобы избежать необходимости экранировать строку, например:

With CurrentDb.CreateQueryDef("","insert into jsonforapi (json) values (@json)")
    .Parameters("@json") = jsonstr2
    .Execute
End With
1 голос
/ 15 марта 2020

Вы можете попробовать это:

DoCmd.RunSQL "INSERT INTO JSONforAPI (JSON) VALUES ('" & Jsonstr2 & "')" 

Это будет одинарная кавычка Jsonstr2.

Поскольку вы не указали в кавычках строку, она передается как GUID, а не как простая строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...