【发布时间】:2018-12-02 08:34:41
【问题描述】:
我正在尝试使用文本文件作为输入从 SQL Server 获取数据,但出现错误:
将 varchar 转换为数据类型 numeric 的算术溢出错误
如果以下代码错误或需要添加其他内容,请告诉我:
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String
Dim iCols As Integer
Dim X As Double
Dim TXT As String
Dim Y As String
Dim A As Double
strcon = "Provider=SQLOLEDB;Data Source=SERVER1;Initial Catalog=MYDB;Integrated Security=SSPI;"
cnn.Open strcon
cnn.CommandTimeout = 900
Open "C:\Users\Gaurav.Shrivastava\Desktop\SLIp\New folder\TESTING.txt" For Input As 1
X = 0
Do While Not EOF(1)
Line Input #1, TXT
Y = Val(TXT)
A = Y
StrQuery = "Select * from FRA_RETAIL where COM_A_NO=" & A & ""
rst.Open StrQuery, cnn
X = X + 1
Loop
For iCols = 0 To rst.Fields.Count - 1
Worksheets("Sheet1").Cells(1, iCols + 1).Value = rst.Fields(iCols).Name
Next
Sheets(1).Range("A2").CopyFromRecordset rst
'rst.Close
'cnn.Close
'Set rst = Nothing
'ActiveWorkbook.Close SaveChanges:=True
'Application.Quit
'Application.ActiveWindow.Close
【问题讨论】:
-
我认为问题来自
where COM_A_NO=" & A & ""导致A的字符串值无法转换为numeric -
我也试过了,但收到同样的错误:StrQuery = "Select * from FRA_RETAIL where COM_A_NO"= & A
-
请建议我如何纠正它
-
我也尝试过 CINT 函数将值存储到整数中,但收到错误为 OVERFLOW,如 A(AS INTEGER) = CINT(TXT)
-
我也会考虑对您的查询进行参数化。
标签: sql sql-server vba