Региональный десятичный разделитель и ADODB подготовили SQL-запросы для MS-Access - PullRequest
1 голос
/ 04 июня 2019

Пожалуйста, рассмотрите этот макрос VBA (я запускаю его из Excel для обновления содержимого таблицы MS-Access):

Dim connect As ADODB.Connection
Dim Param As ADODB.Parameter
Dim Command As ADODB.Command

Set Param = New ADODB.Parameter

Param.Type = adNumeric
Param.Value = 3.02

Param.Precision = 4
Param.NumericScale = 2

Set Command = New ADODB.Command

Command.CommandText = "UPDATE MyTable SET DecimalField = ? WHERE ID = 138721"
Command.Prepared = True

Command.Parameters.Append Param

Set connect = New ADODB.Connection
connect.Provider = "Microsoft.ACE.OLEDB.12.0"
connect.ConnectionString = "Data Source=" & DB_Test & ";Jet OLEDB:Engine Type=5;Persist Security Info=False;"
connect.Open

Command.ActiveConnection = connect

Command.execute

Он работает идеально, если системный десятичный разделитель равен .

Если я изменю региональные настройки системы, чтобы использовать , в качестве десятичного разделителя, последняя строка макроса выдает эту ошибку:

Точность десятичного поля слишком мала, чтобы принять введенную вами цифручтобы добавить

Я могу использовать . или , в качестве десятичного разделителя, VBA всегда преобразует его в Variant / Decimal:

Param content

Тогда я предполагаю, что ADODB не позволяет передавать десятичную дробь в базу данных MS-Access, когда системный десятичный разделитель не ..

Есть ли способ заставить его работать сготовые заявления?

...