none
[VB.NET] Accès à une base de données .dbf RRS feed

  • Question

  • Bonjour,

    Je suis en train de me battre avec visual pour essayer de lire un fichier .dbf, j'arrive à avoir certains résultats, mais pas d'autre, j'ai les erreurs suivantes:

    System.InvalidOperationException: Tentative non valide de lecture de l'ordinal de colonne '1'. Avec CommandBehavior.SequentialAccess, vous ne pouvez lire qu'à partir de l'ordinal de colonne '5' ou supérieur.
    à System.Data.OleDb.OleDbDataReader.DoValueCheck(Int32Une exception de première chance de type 'System.IndexOutOfRangeException' s'est produite dans System.Data.dll

    ou ceci

    System.IndexOutOfRangeException: FILESCANND
    à System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
    à System.Data.OleDb.OleDbDataReader.GetOrdinal(String name)
    à System.Data.OleDb.OleDbDataReader.get_Item(String name)

    et voici mon code:

    Dim ConnectionString As String
     
    ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" + repertoire + ";Extended Properties=dBase IV"
    Dim dBaseConnection As New System.Data.OleDb.OleDbConnection(ConnectionString)
    dBaseConnection.Open()
     
    Dim dBaseCommand As New System.Data.OleDb.OleDbCommand("SELECT * FROM monFichierDbf", dBaseConnection)
    Dim dBaseDataReader As System.Data.OleDb.OleDbDataReader = dBaseCommand.ExecuteReader(CommandBehavior.SequentialAccess)
     
     
     
    While dBaseDataReader.Read
    Console.WriteLine("===================================")
    Console.WriteLine(dBaseDataReader("TIMEDONE").ToString)
    Console.WriteLine(dBaseDataReader("DESCRIPT").ToString)
    Console.WriteLine(dBaseDataReader("INFOTYPE").ToString)
    Console.WriteLine("===================================")
    End While
     
     
    dBaseConnection.Close()

    mercredi 1 octobre 2008 12:46

Toutes les réponses

  • Bonjour,

     

    Afin de mieux répondre à votre problème, pourquoi utilisez-vous le mode "SequentialAccess" du OleDbDataReader ?

     

    Cordialement

    mercredi 1 octobre 2008 18:45
    Modérateur
  •  

    A vrai dire, j'ai trouvé un exemple de code sur le Net, je n'ai pas l'habitude d'attaquer des base dbf.

     

    Voici le contenu que j'obtiens lorsque j'ouvre mon .dbf avec dbfViewer:

     

     

     

    Mais lorsque que je demande "timedone" par exemple je n'ai pas le resultat escompté, j'ai le résultat d'une autre colonne!
    lundi 6 octobre 2008 12:24
  •  

    Je n'arrive toujours pas à obtenir les résultats désirés, c'est un point bloquant pour moi

     

    Adrien

    vendredi 10 octobre 2008 07:01
  • Bonjour,

     

    Supprimer l'option "CommandBehavior.SequentialAccess".

     

    Cordialement

     

    vendredi 10 octobre 2008 07:32
    Modérateur
  • J'ai exactement le meme probleme

     

    vendredi 10 octobre 2008 09:45
  • Bonjour,

     

    Avez vous exactement le même message d'erreur ?

    Est-il possible que vous puissiez m'envoyer un petit projet qui reproduirait l'erreur à cette adresse : gilles.tourreau@pos.fr

     

    Cordialement

     

    vendredi 10 octobre 2008 14:00
    Modérateur
  •  

    voici l'image de mon code ainsi que les sorties:

     

     

    et voici le contenu que j'obtiens lorsque j'ouvre mon .dbf avec dbfViewer:

     

     

    Adrien

    vendredi 10 octobre 2008 15:15
  • Bonjour,

     

    Il semblerait qu'il n'y a pas d'erreur dans l'execution de votre programme ? (L'exécution de votre code passe dans la boucle du Read()).

    Est-il possible que vous puissiez nous expliquer ce qui pose problème ?

     

    Cordialement

    vendredi 10 octobre 2008 20:58
    Modérateur
  • Bonjour,

     

    je me suis mal exprimé, je n'ai aucune erreur dans le code, il lit bien le fichier dbf.

     

    Le probléme est quand je souhaite avoir la valeur d'une colonne, comme par exemple "TIMEDONE" dans la deuxieme image, il y a bien une date, mais lorsque que je demande la valeur avec mon programme, il me donne comme valeur "D:" (voir fenêtre de sortie sur la 1er image)

    lundi 27 octobre 2008 07:55
  • Bonjour,

     

    Est-il possible que vous puissiez m'envoyer votre fichier .dbf (juste une ligne comme dans la 1ère image) sur cette adresse e-mail : gilles.tourreau@pos.fr

     

    Merci d'indiquer dans le mail un lien vers cette conversation.

     

    Cordialement

    mardi 28 octobre 2008 20:25
    Modérateur