The following code gives me an IndexOutOfRange
error.
‘Baujahr’ is an integer column in my access-database.
cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString());
Here the reader:
OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString()); }
And the whole code of this procedure:
try { connection.Open(); OleDbCommand command = new OleDbCommand(); command.Connection = connection; string query = "SELECT DISTINCT Typ FROM Autos WHERE Hersteller = @FahrzeugHersteller AND Modell = @FahrzeugModell AND Typ = @FahrzeugTyp;"; command.CommandText = query; command.Parameters.Add("@FahrzeugHersteller", SqlDbType.Text); command.Parameters["@FahrzeugHersteller"].Value = cbFahrzeugHersteller.Text; command.Parameters.Add("@FahrzeugModell", SqlDbType.Text); command.Parameters["@FahrzeugModell"].Value = cbFahrzeugModell.Text; command.Parameters.Add("@FahrzeugTyp", SqlDbType.Text); command.Parameters["@FahrzeugTyp"].Value = cbFahrzeugTyp.Text; OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { cbFahrzeugBJ.Items.Add(reader.GetInt32("Baujahr").ToString()); } connection.Close(); } catch (Exception ex) { MessageBox.Show("Error " + ex); }
Advertisement
Answer
You are only including the Typ
column in your result set. You will have to include Baujahr
in your SELECT
statement if you want to access it in your DataReader
.
i.e:
string query = "SELECT DISTINCT Typ, Baujahr FROM Autos WHERE Hersteller = @FahrzeugHersteller AND Modell = @FahrzeugModell AND Typ = @FahrzeugTyp;";