2016-04-01 17 views
0

Ich arbeite derzeit an einem kleinen Projekt für eine Geschäftsgesellschaft in Visual Studio 2015 und SQL Server. Ich habe zwei Comboboxen "AccountCode" und "AccountNo". Ich möchte die Kombinationsfeld "AccountNo" gemacht, um seinen Wert in Übereinstimmung mit der Auswahl eines Textes von "AccountCode" Drop-Down zu ändern. Aber ich bekomme folgende Fehlermeldung:Wie man Combobox Drop-Down erstellt ändert seine Liste in Korrespondenz zu einer anderen Combobox?

An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

Additional information: The multi-part identifier "System.Data.DataRowView" could not be bound.

private void cmBxAccountCode_DataEntry_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     cmBxAccountNo_DataEntry.ResetText(); 
     cmBxAccountNo_DataEntry.Refresh(); 
     DataSet ds = new DataSet(); 
     da.SelectCommand = new SqlCommand("SELECT ID,ACCOUNTNO FROM AccountHolder WHERE ACCOUNTCODE =" + cmBxAccountCode_DataEntry.Text, SQLConnection.con); 
     da.Fill(ds); 
     cmBxAccountNo_DataEntry.DataSource = ds.Tables[0]; 
     cmBxAccountNo_DataEntry.DisplayMember = "ACCOUNTNO"; 
     cmBxAccountNo_DataEntry.ValueMember = "ID"; 
    } 

Antwort

0

Ihre Abfrage wie folgt sein sollte:

SELECT ID,ACCOUNTNO FROM AccountHolder WHERE ACCOUNTCODE ='" + cmBxAccountCode_DataEntry.Text + "'" 

Aber ich empfehle Ihnen parametrisierte Abfragen verwenden Injektion zu vermeiden; Und nehmen Sie stattdessen den ausgewählten Wert für Text (aber es ist nach dem Wert in der Datenbank). Die parametrisierte Abfrage wird wie folgt aussehen:

// Code here 
SqlCommand selectCommand= new SqlCommand("SELECT ID,ACCOUNTNO FROM AccountHolder WHERE ACCOUNTCODE [email protected]", SQLConnection.con); 
selectCommand.Parameters.Add("@accountCode", SqlDbType.VarChar).Value = cmBxAccountCode_DataEntry.Text; 
// execute here 
+0

danke @ un-lucky. Ich habe es und mein Problem gelöst! :) –

Verwandte Themen