2017-03-10 1 views
1

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); 
     } 
+0

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

+0

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

+0

@MethodMan inutile, S'il n'y a pas de lignes, Read retourne false, – stuartd

Répondre

2

Vous n'incluez la colonne Typ dans votre jeu de résultats. Vous devrez inclure Baujahr dans votre déclaration SELECT si vous voulez y accéder dans votre DataReader.

i.e.:

string query = "SELECT DISTINCT Typ, Baujahr FROM Autos WHERE Hersteller = @FahrzeugHersteller AND Modell = @FahrzeugModell AND Typ = @FahrzeugTyp;"; 
+0

yep - merci, mise à jour! –

+0

Voilà, merci! –