ADODB Excel / Access SQL插入舍去小数:任何想法为什么或如何解决?

早上好,

我目前正在开发一个项目,我们需要通过VBA导出一些Excel数据到Access; 我在Excel中做VBA,因为我们有一个macros,它已经做了我们所有的格式化和其他的东西。 macros正常工作(数据导入成功),但有一个问题:由于某种原因,一些未知的错误(可能在Excel,Access,SQL或ADODB方)将四舍五入到整数(“ints” )。 我没有在我的VBA或SQL代码中使用任何types的舍入函数(见下文),Access中的列有两位小数的“Number”数据types(和“General Number”格式),所以我不知道为什么它是四舍五入的。 也许在ADODB对象(我只是最近学会使用)的东西需要configuration处理小数或什么的? 或者,也许有一个比“数”更好的数据types(虽然Access似乎没有进入浮动和双打,所有这一切)? 我一直在search,并没有find太多的主题。 有很多类似的问题,但没有真正符合这种情况。 所以一如既往,任何线索将不胜感激。 谢谢。

Sub ExportReport() Call connect("M:\Matrix\5-Information Technology\1-Knowledge Base\Reporting\Agent Stats.accdb") 'This just connects to the DB and works fine. Dim test As String, i As Integer Range("A3").Select For i = 1 To ActiveSheet.UsedRange.Rows.Count If ActiveCell.Value = vbNullString Then Exit For test = "INSERT INTO [My Report] " & _ "([CALL DATE], [CAMPAIGN], [AVG AGENTS], " & _ "[OFFERED], [ANSWERED], [HANDLE(M)], [AVG HANDLE(M)], " & _ "[TALK(M)], [AVG TALK(M)], [DISPO(M)], " & _ "[ABANDONED], [ABAN PCT], [ASA(S)], " & _ "[SVC LVL PCT], [OUTBOUND], [OUTBOUND(M)], " & _ "[OVERFLOW], [OVERFLOW(M)]) " & _ "VALUES('" & _ ActiveCell.Value & "', '" _ & ActiveCell.Offset(0, 1).Value & "', '" & ActiveCell.Offset(0, 2).Value & "', '" _ & ActiveCell.Offset(0, 3).Value & "', '" & ActiveCell.Offset(0, 4).Value & "', '" _ & ActiveCell.Offset(0, 5).Value & "', '" & ActiveCell.Offset(0, 6).Value & "', '" _ & ActiveCell.Offset(0, 7).Value & "', '" & ActiveCell.Offset(0, 8).Value & "', '" _ & ActiveCell.Offset(0, 9).Value & "', '" & ActiveCell.Offset(0, 10).Value & "', '" _ & ActiveCell.Offset(0, 11).Value & "', '" & ActiveCell.Offset(0, 12).Value & "', '" _ & ActiveCell.Offset(0, 13).Value & "', '" & ActiveCell.Offset(0, 14).Value & "', '" _ & ActiveCell.Offset(0, 15).Value & "', '" & ActiveCell.Offset(0, 16).Value & "', '" _ & ActiveCell.Offset(0, 17).Value & "');" DB.Execute test ActiveCell.Offset(1, 0).Activate Next i Call CloseDatabase 'Again, this part works fine End Sub 

主要有两个原因,那就是SQL INSERT语句的十进制数字会丢失。

第一:数据库字段的十进制数字大小不正确。

第二:INSERT语句中的小数点分隔符不同于数据库小数点分隔符。

在Access中,您可以在devise视图中控制数字字段的字段大小。 对于带有十进制数字的值,它必须是单倍,双倍或十进制。 请参阅: http : //office.microsoft.com/en-us/access-help/set-the-field-size-HA010274716.aspx#BM2

第二种可能性主要发生在生成INSERT语句的系统和托pipe数据库的系统之间有不同的语言环境设置。 由于这个问题的意见,在这种情况下情况并非如此。

问候

阿克塞尔

我不知道这个问题是否适用于这个问题,我不明白adodb开发者有没有想过。

在你的vba中,使用10,100将小数转换为整数…然后上传数据并使用现有查询或从excel中除以访问内部的移位因子,但是访问db的时间会更慢