【发布时间】:2019-03-30 15:30:35
【问题描述】:
我在 Excel 中创建了一个宏来从 SQL Server 导入和导出数据。但是,当我尝试导出数据时,它会引发错误
[Microsoft][ODBC SQL Server 驱动程序][SQL Server]
将数据类型 varchar 转换为数值时出错
当我导出整数时,代码运行良好。当我尝试导出实数时出现错误。
Dim gil, gibnr, gul, fil, fibnr, ful, qil, qibnr, qul, xil, xibnr, xul, oil, oibnr, oul, cil, cibnr, cul, nil, nibnr, nul, bul, hul, lul, indul As Long
conn.Execute "insert into dbo.Intl_LL (UWU,OBU,Profile_ID, Insured_name, Claim_number,Claim_desc, Event_Name, UY, AY, AQ, Date_of_loss, Region, CCY, Policy_number, Branch, LE, MPL,Claim_alert_email, Comments, [Large Profile Flag], [Earmark Flag], [Tracked for Qtrly dev], [Gross Incurred], [Gross IBNR], [Gross Ultimate], [FAC Incurred], [FAC IBNR], [FAC Ultimate], [QS Incurred],[QS IBNR],[QS Ultimate],[XOL Incurred],[XOL IBNR],[XOL Ultimate],[Ceded OTH Incurred],[Ceded OTH IBNR],[Ceded OTH Ultimate],[Ceded Total Incurred],[Ceded Total IBNR],[Ceded Total Ultimate],[Net Incurred],[Net IBNR],[Net Ultimate],[Booked Ultimate],version)" & _
"values ('" & sUWU & "', '" & sOBU & "','" & sProfile & "', '" & sInsured & "','" & sClaim & "','" & sClmdesc & "','" & sEvent & "','" & sUY & "','" & sAY & "','" & sAQ & "','" & sDOL & "','" & sRegion & "','" & sCCY & "','" & sPolnum & "','" & sBranch & "','" & sLE & "','" & sMPL & "','" & sClaimalert & "','" & sComm & "','" & sLargeF & "','" & sEarF & "','" & sTrackF & "','" & gil & "', '" & gibnr & "','" & gul & "','" & fil & "','" & fibnr & "','" & ful & "','" & qil & "','" & qibnr & "','" & qul & "','" & xil & "','" & xibnr & "','" & xul & "','" & oil & "','" & oibnr & "','" & oul & "','" & cil & "','" & cibnr & "','" & cul & "','" & nil & "','" & nibnr & "','" & nul & "','" & bul & "', '" & ver & "')"
我已确保 VBA 中具有 Long 数据类型的变量在 SQL Server 中为 numeric(7, 11) 类型。
请随时询问有关该问题的更多信息。谢谢。
【问题讨论】:
-
您需要调试代码,因为没有人可以帮助您处理从前端页面传递的值?检查表的列数据类型以及该列对应的插入语句中的传递值是什么。
-
NUMERIC(7,11)在 SQL Server 中的意思是:总共 7 位,其中小数点后 11 - 这看起来不像非常有用的数据类型.....我会尝试类似NUMERIC(20,6)或类似的东西,看看它是否有效...... -
Official documentation for the
numericdatatype - 解释声明中的这两个数字意味着 -
你声明了很多
Variants并且只有一个Long变量,请像这样修正你的声明:Dim gil as Long, gibnr as Long, gul as Long, ...如果你想要Longvba 中的变量
标签: sql sql-server excel vba