2013-11-04 37 views
0

我有這樣傳遞多個選擇項ID存儲過程

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窗體.. 先生在我的情況下,我正在使用listbox所選項目值如下所示:

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我傳遞到存儲過程..

回答

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 
+0

先生。爲什麼要更新「SET Field1 ='test'」 – user2951524

+0

這只是一個例子。你可以隨意改變它。但你確切地想要嗎?你想返回記錄或返回一個值,或者只是簡單地更新你的數據庫(這裏就是這種情況)? – Edper

+0

先生..我不明白你爲什麼更新數據庫,,我編輯我的問題 – user2951524

相關問題