请考虑使用此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数据库。
有没有办法使它与准备好的语句一起工作?