我的存储过程符合以下条件:
WHERE (Transaction_tbl.dtime BETWEEN @fromDate AND @toDate)
AND (Location_tbl.Locid IN (@locations))
我有一个ListBox,用于填充@locations
参数(一个整数),以及两个DateTimePicker控件,用于@fromDate
和@toDate
。
我的列表框值如下:
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
我想将此列表项值传递给我的存储过程...我怎么能 这样做?
cmd23.Parameters.Add("@startDate", SqlDbType.NVarChar, 50, ParameterDirection.Input).Value= startdate
cmd23.Parameters.Add("@endDate", SqlDbType.NVarChar, 50, ParameterDirection.Input).Value = enddate
cmd23.Parameters.Add("@locations", SqlDbType.Int) ' <= ???
如何修改此代码以将多个整数标识符作为@locations
参数传递,以便我可以在列表框中选择多个项目?
答案 0 :(得分:0)
将您的位置参数更改为字符串。
选择项目 INTO #locations 来自dbo.split(@locations,',')
您可以在此处找到拆分功能:Split string by comma in SQL Server 2008
您必须更改查询以加入#locations临时表。
然后从你的VB传递来自LSTlocations的所有选定项目的逗号分隔字符串
类似的东西:
[String] .Join(“,”,LSTlocations.Items.Cast(Of ListItem)()。Where(Function(i)i.Selected)。[Select](Function(i)i.Value)。ToArray ())