Le code suivant indique une erreur IndexOutOfRange
. 'Baujahr' est une colonne entière dans ma base de données d'accès.Convertir un entier SQL en chaîne C# pour une zone de liste déroulante (base de données Access)
cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString());
Ici, le lecteur:
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString());
}
Et tout le code de cette procédure:
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);
}
s'il vous plaît montrer tous les codes pertinents .. où est-ce défini 'cbFahrzeugTyp' avez-vous utilisé le débogueur pour parcourir le code ..? – MethodMan
changez votre code et avant la boucle while ajoutez ceci 'if (reader.HasRows) {}' faites votre code de boucle while à l'intérieur du bloc if – MethodMan
@MethodMan inutile, S'il n'y a pas de lignes, Read retourne false, – stuartd