0

我有一个像这样的表值参数

CREATE TYPE dbo.ss AS TABLE(ss1 integer);

我的存储过程如下所示:

ALTER PROCEDURE [dbo].[T_TransactionSummary] 
    @locations dbo.ss readonly
as
begin
    ...............
    .............
    AND (Location_tbl.Locid IN (@locations))

我有一个包含多个项目的列表框。我可以从我的列表框中选择多个项目。Locationid如果我总是从列表框中选择一个位置,如何将多个传递给我的存储过程?

我这样传递它们(仅选择一项时):

dim locid as integer = Lstbox.selectedItem
cmd.parameters.add("@locations", locid)

但我不知道如何将多个选定项目一起从列表框传递到存储过程。如果我从列表框中选择了多个项目,我想将所有项目 ID 一起传递给我的存储过程

我正在处理 vb.net windows 表单。先生,在我的情况下,我正在使用列表框选定的项目值,如下所示:

 For i = 0 To cnt - 1
         Dim locationanme As String = LSTlocations.SelectedItems(i).ToString
       locid = RecordID("Locid", "Location_tbl", "LocName", locationanme)
   Next
        'End If

这个 locid 我正在传递给存储过程..

4

1 回答 1

0

尝试使用For each来获取所有选定的项目,然后Using每次循环使用后丢弃对象,例如:

For Each selectedItem As Object In ListBox1.SelectedItems
    Dim cmdText As String = "T_TransactionSummary"
    Dim locid As Integer = Int32.Parse(selectedItem.ToString())
    Using con As New SqlConnection("connection string here"), comm As New SqlCommand(cmdText), da As New SqlDataAdapter(comm)
            comm.CommandType = CommandType.StoredProcedure
            comm.Parameters.Add("@location", SqlDbType.Int).Value = locid
            comm.ExecuteNonQuery()
            Dim dst As New DataSet
            da.Fill(dst)
    End Using
Next
于 2013-11-04T06:08:52.110 回答