3
Answers

Problem with the comboBox_SelectedIndexChanged

Ask a question
Nel

Nel

12y
1.7k
1
Hi,

I have two comboboxes on my windows form, and I want to fill the second combobox depending on the selected value of the first one.
I have this code for the first combobox_selectedindexchanged:

private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
  {
 OleDbCommand command2 = new OleDbCommand();
  command2.CommandText = "Select * from Dogovor where Komint=? order by Brdog";
  command2.Parameters.AddWithValue("Komint", comboBox3.SelectedItem);
  command2.Connection = conn;
  DataSet3 _dataset = new DataSet3();
  OleDbDataAdapter oleDBDataAdapter1 = new OleDbDataAdapter(new OleDbCommand(command2.CommandText, conn));
 
  try
  {
 //conn.Open();  command2.ExecuteNonQuery();
 oleDBDataAdapter1.Fill(_dataset, "Dogovor");
  comboBox2.DataSource = _dataset.Tables["Dogovor"];
  comboBox2.DisplayMember = "Brdog";
  comboBox2.ValueMember = "Brdog"; 
 }
  finally
  {
  conn.Close();
  }
  textBox1.Focus();
}
 and I get this error:
"Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done."

I tried to avoid using parameter, though I need it, but just to try what I will get. For the bold lines I have now:

 command2.CommandText = "Select * from Dogovor order by  Brdog";
  //command2.Parameters.AddWithValue("Komint",  comboBox3.SelectedItem);
  command2.Connection = conn;

and I get error "ExecuteNonQuery requires an open and available Connection. The connection's current state is closed."

But if I uncomment
  //conn.Open();

then I get error " The connection was not closed. The connection's current state is open."

Can anybody help me please?
Thank you in advance.


P.S. Here is how I fill the first combobox:

private void Dogovor_Load(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
          
            textBox1.Focus();
            DataSet3 _dataset = new DataSet3(); 
            OleDbCommand command3 = new OleDbCommand();
                        
             command3.Connection = conn;            
             command3.CommandText = "Select * from Komintent order by Komintent asc";                     
             OleDbDataAdapter DatAd = new OleDbDataAdapter(new OleDbCommand(command3.CommandText, conn));
           
            try
            {
                conn.Open();
               command3.ExecuteNonQuery();

                DatAd.Fill(_dataset, "Komintent");

                comboBox3.Items.Add("[Site]");
             
                comboBox3.DataSource = _dataset.Tables["Komintent"];
              
                comboBox3.DisplayMember = "Komintent";
                comboBox3.ValueMember = "ID";
               
                comboBox3.SelectedIndex = comboBox3.Items.Count - 1;
                }
            finally
            {
                conn.Close();
            }
        }



Answers (3)