次のようなストアド プロシージャがあります。
ALTER PROCEDURE [dbo].[T_TransactionSummary]
@locations nvarchar
AS
BEGIN
..............
.............
AND (Location_tbl.Locid IN (@locations))
私のlocidフィールドは整数です。このlocidはリストボックスから取得されます.1つのアイテムを選択すると1つのlocidが来ます.2つのアイテムを選択すると2つのlocidが来ます..@locationsパラメーター(整数)を入力するListBoxがありますリストボックスの値を次のように取りました
cnt = LSTlocations.SelectedItems.Count
Dim list As New List(Of Integer)
Dim locid As Integer
If cnt > 0 Then
For i = 0 To cnt - 1
Dim locationanme As String = LSTlocations.SelectedItems(i).ToString
locid = RecordID("Locid", "Location_tbl", "LocName", locationanme)
list.Add(locid)
Next
End If
Dim da As New SqlDataAdapter
Dim ds As New DataSet
Dim cmd23 As New SqlCommand("T_TransactionSummary", con.connect)
cmd23.CommandType = CommandType.StoredProcedure
cmd23.Parameters.Add("@locations", SqlDbType.Int).Value = String.Join(",", list)
da.SelectCommand = cmd23
da.Fill(ds)
現在、リストボックスからのロケーションIDはストアドプロシージャ1,2,3のみに渡されています。ただし、ストアド プロシージャは常に最初の値を取得します (この場合は 1 を取得することを意味します)。