2010-04-09 4 views
0

J'ai un formulaire qui permet à un utilisateur d'importer une feuille de calcul. Cette feuille de calcul est généralement statique en ce qui concerne les en-têtes de colonne, mais les utilisateurs veulent maintenant pouvoir inclure une colonne optionnelle (appelée Notes). Mon code se bloque lorsque j'essaie de lire la colonne de la feuille de calcul si elle n'existe pas.Importer une feuille de calcul mais avoir des problèmes

 Dim objCommand As New OleDbCommand() 
     objCommand = ExcelConnection() 'function that opens spreadsheet and returns objCommand 

     Dim reader As OleDbDataReader 
     reader = objCommand.ExecuteReader() 

     While reader.Read() 
      Dim Employee As String = Convert.ToString(reader("User")) 
      Dim SerialNUM As String = Convert.ToString(reader("serialno")) 
      **Dim Notes As String = Convert.ToString(reader("notes"))** 

Si la feuille de calcul contient une colonne Notes, tout se passe bien. Sinon, crash. Comment puis-je vérifier si la colonne Notes existe dans la feuille de calcul pour éviter le crash?

Répondre

1

Modifier le code à quelque chose comme ceci: [EDIT - a changé la logique de code)

Dim fieldCount = reader.FieldCount 
For i = 0 To fieldCount - 1 
Dim colName = reader.GetName(i) 
If (colName = "notes") Then 
    Dim Notes As String = reader.GetString(i) 
End If 
Next i 
+0

Merci à vous deux pour les réponses. GetOrdinal ("Notes") a quand même lancé une erreur si cette colonne n'existait pas, mais reader.GetName (4) = "Notes" fonctionne tant que le client s'assure que la colonne Notes est au bon endroit. –

+0

@Chris, j'ai changé la logique de mon exemple. De cette façon, vous itérez les colonnes, et vérifiez si elles correspondent à ce que vous voulez, au lieu de supposer que la colonne existe. –

1

Peut-être OleDbDataReader.FieldCount pourrait vous aider à programmer une solution de contournement.

+0

deux vous me regardant dans le droit direction..thank vous! –

Questions connexes