Пожалуйста, рассмотрите этот макрос 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:
Тогда я предполагаю, что ADODB не позволяет передавать десятичную дробь в базу данных MS-Access, когда системный десятичный разделитель не .
.
Есть ли способ заставить его работать сготовые заявления?