目前我的应用程序使用两个单独的文本框正常工作,用户输入一个sku和一个订单号,然后单击一个按钮来运行SQL查询。为了使这个应用程序更有效,我想允许用户在多行文本框中输入订单列表,但我不知道如何设置变量以将列表传递给我的查询。
现状:
partners@zapier.com
我的多行文本框是txtOrderList,显然我会将我的SQL查询更改为IN语句。
如果有人能指出我正确的方向,我会很感激。
答案 0 :(得分:0)
有很多方法可以完成这项任务。
XML
字符串,然后将其传递给存储过程,然后创建一个可以加入的表变量。例如:
Dim orderNums As String = String.Join(",", txtOrder.Lines)
SQL.AddParam("@order", orderNums)
'Execute your query...
在您的查询中......
SQL.ExecQuery("DECLARE @tbl TABLE(OrderNums BIGINT);
INSERT INTO @tbl(OrderNums)
SELECT x.value
FROM STRING_SPLIT(@order, ',') x;
UPDATE sop
SET qtycance = qtytoinv, qtytoinv = '0', ATYALLOC = '0', QTYREMAI = '0'
FROM @tbl t
INNER JOIN sop10200 sop
ON sop.SOPNUMBE = t.OrderNums
WHERE sop.ITEMNMBR = @sku;
")
希望这会让你走上正轨...上面会更新sop10200
表中提供订单号的所有内容。
答案 1 :(得分:-1)
根据数据库以及是否使用商店程序,没有简单的方法。您必须使用像这样的for循环构建查询
where ITEMNMBR IN (@sku0, @sku1, ...)
然后添加sku
Dim skus = txtSKU.Text.split(",")
SQL.AddParam("@SKU0", skus(0))
SQL.AddParam("@SKU1", skus(1))
...
这是一个简单的例子,您肯定需要使用循环来正确构建它。
For i As Integer = 0 To skus.length - 1
SQL.AddParam("@SKU" & i, skus(i))
Next
类似For循环将需要构建查询。