2013-06-11 76 views
2

填補我有以下代碼:組合框的代碼無效

Using conn = New SqlConnection(connStr) 
     Dim sql = "SELECT [CATEGORIA], [AREA] FROM [CATEGORIAS] WHERE ([AREA] = @AREA)" 
     Dim sqlCmd = New SqlCommand(sql, conn) 
     sqlCmd.Parameters.AddWithValue("@AREA", CStr(PublicLogin.Area)) 

     conn.Open() 
     Dim ds As New DataSet 
     Dim da As New SqlDataAdapter(sql, conn) 
     da.Fill(ds, "CATEGORIAS") 

     With cboCat 
      .DataSource = ds.Tables("CATEGORIAS") 
      .DisplayMember = "CATEGORIAS_AREA" 
      .ValueMember = "CATEGORIAS_AREA" 
      .SelectedIndex = 0 
     End With 

    End Using 

應該在理論上填補組合框嗎?它沒有。它不會給我任何錯誤或任何東西;組合框只是空着。我很確定查詢運行良好,它抓取正確的信息,但Combobox不填充。如果我把where查詢出來,它用'System.Data.Row ...'填充CB。

UPDATE:工作代碼,以防有人需要它;

 Using conn = New SqlConnection(connStr) 
     Dim sql = "SELECT [CATEGORIA], [AREA] FROM [CATEGORIAS] WHERE ([AREA] = @AREA)" 
     Dim sqlCmd = New SqlCommand(sql, conn) 
     sqlCmd.Parameters.AddWithValue("@AREA", CStr(PublicLogin.Area)) 

     conn.Open() 
     Dim ds As New DataSet 
     Dim da As New SqlDataAdapter(sqlCmd) 
     da.Fill(ds, "CATEGORIAS") 

     With cboCat 
      .DataSource = ds.Tables("CATEGORIAS") 
      .DisplayMember = "CATEGORIA" 
      .ValueMember = "CATEGORIA" 
      .SelectedIndex = 0 
     End With 

    End Using 

回答

2

它是空的,因爲可能查詢不會返回任何內容。請注意,您並未將該參數添加到sql變量的最終查詢中。

您使用查詢和參數創建了一個命令,但您從不使用它,因此當您選擇所有值WHERE ([AREA] = @AREA)時,它將不返回任何內容。

試試這個:

Dim da As New SqlDataAdapter(sqlCmd) 
+0

+1。在您的答案之前,我沒有注意到'sqlCmd'沒有被使用。現在我很困惑它怎麼不拋出異常... – Neolisk

+0

你說得對。我將查詢的WHERE部分拿出來並顯示數據(感謝Neolisk的回答)。我檢查了參數上的斷點,並且PublicLogin.Area變量正確傳遞了該值。儘管我沒有完全理解你的第一句話,但是參數在查詢(@AREA)中,或者有什麼顯而易見的東西丟失了嗎? (發生在我身上)。 –

+0

我從來不會調用實際的sqlCMD。 Goddangit。我應該在哪裏正確添加它? –

2

這看起來很奇怪對我說:

.DisplayMember = "CATEGORIAS_AREA" 
.ValueMember = "CATEGORIAS_AREA" 

這也許應該是這樣的:

.DisplayMember = "CATEGORIA" 
.ValueMember = "AREA" 

MSDN on DisplayMember

獲取或設置一個字符串,指定該屬性或從中檢索要在組合框中顯示的字符串。

編輯:您還需要更換this

Dim da As New SqlDataAdapter(sql, conn) 

this

Dim da As New SqlDataAdapter(sqlCmd) 

否則絕不會使用你的參數。

+0

試了一下。 CB仍然空着。我玩了一下,仍然沒有去。 –

+0

@LordRelix:您是否驗證過「表格」(「CATEGORIAS」)有任何數據? – Neolisk

+0

我做了什麼SysDragon告訴我下面和你的解決方案工作。它正確地帶來了數據。現在爲什麼這不是在哪裏工作.... –