使用多行文本框进行用户输入而不是单行VB.net

时间:2018-05-01 18:19:27

标签: sql vb.net

目前我的应用程序使用两个单独的文本框正常工作,用户输入一个sku和一个订单号,然后单击一个按钮来运行SQL查询。为了使这个应用程序更有效,我想允许用户在多行文本框中输入订单列表,但我不知道如何设置变量以将列表传递给我的查询。

现状:

partners@zapier.com

我的多行文本框是txtOrderList,显然我会将我的SQL查询更改为IN语句。

如果有人能指出我正确的方向,我会很感激。

2 个答案:

答案 0 :(得分:0)

有很多方法可以完成这项任务。

  1. 您可以从您的选择中构建一个XML字符串,然后将其传递给存储过程,然后创建一个可以加入的表变量。
  2. 创建一个分隔字符串,您可以在调用内部拆分,插入表变量。
  3. 例如:

     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循环将需要构建查询。