【发布时间】:2022-01-18 12:08:31
【问题描述】:
我收到此错误是因为尝试将 Itemnr2 变量作为单元格值。如果我使用像 ItemNr1 中的普通值,则一切正常。但我需要使用单元格中的值,因为它会不时更改,所以不希望每次都更改代码。如何将单元格中的值放入 SQL 代码以使其正确?
当我在所有值都是数字的其他列中使用它时它正在工作。在我需要的这个列中有像 b2b_pkl 这样的值,因此在将 nvarchar 值转换为数据类型 int 错误时,我得到那些转换失败。
PA = get_market_setting(market, "PA")
POS = get_market_setting(market, "POS")
NetAmount = get_market_setting(market, "Net Amount")
CostAmount = get_market_setting(market, "Cost Amount")
qty = get_market_setting(market, "Quantity")
transNo = get_market_setting(market, "Transaction No.")
ItemNo = get_market_setting(market, "Item No.")
CustNo = "[Customer No_]"
ItemNr1 = "('80502842')"
Itemnr2 = ThisWorkbook.Sheets("Data").Range("C1").Value
ECPOS_arr = "(" & get_market_setting("LT", "ECPOS_Arr") & ")"
' SQL query string
myquery = "SELECT -SUM(" & NetAmount & ") AS [Result] FROM " & table_TSE & _
" WHERE " & ItemNo & " IN " & Itemnr2 & _
" AND [Date] BETWEEN '" & date_from & "' AND '" & date_to & "'"
' Set Recordset to query set database on SQL string
Set sourceRs = sourceDb.OpenRecordset(myquery)
'Assign Data to variable from RecordSet'
sourceRs.MoveFirst
NetAmount = sourceRs![Result]
sourceRs.Close
sourceDb.CloseRecordset
'Populate HFB Report file'
【问题讨论】:
-
请勿贴代码图片。而是包含代码本身,以便人们可以根据需要复制/粘贴它。
-
使用您无法控制的工作表中的数据手动构造 SQL 字符串可能不是一个好主意,因为它存在 SQL 注入的风险。请参阅stackoverflow.com/questions/35163361/… 进行讨论,这可能也可以解决您的问题。
-
Intemnr2 应该在括号之间。
-
当我在 ECPOS_arr 变量中放置括号时出现错误“将 nvarchar 值转换为数据类型 int 时转换失败。
-
单元格 C1 中有什么?它是单个值还是逗号分隔的值列表?另请说明您尝试访问的 DBMS 是 SQL Server 吗?