Так как никто не ответил, упростил себе жизнь, вместо adNumeric=131 (числовой с фиксированной точкой), поставил adSingle=4 (одинарное с плавающей точкой) и в таблице Access поставил на прием плавающую точку.
Убрал .NumericScale и .Precision
Всё заработало. Правда, подозреваю, объем базы данных вырастет.
В Access похоже, adNumeric нет, используется только adDecimal=14. Если задавать в конструкторе запроса Тип параметра принудительно, то на "Действительное" в SQL-режиме подставляется Decimal
Но вариант с .CreateParameter("@Size", 14, 1) точно так же дает ошибку типа.
Только что проверил. Если передавать параметр как с плавающей точкой
.CreateParameter("@Size", 4, 1)
А в Access для поля задано "Действительное, фиксированное, точность 2..." - как мне и нужно было, то Access сам преобразует Single в нужный фиксированный формат без возвращения ошибки.
Т.е. вопрос можно сказать, решен.