区域小数点分隔符和ADODB为MS-Access准备了SQL请求

时间:2019-06-04 15:57:55

标签: excel vba ms-access adodb

请考虑使用此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数据库。

有没有办法使它与准备好的语句一起工作?

0 个答案:

没有答案