IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] Mauvaise récupération de données


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut [VB6] Mauvaise récupération de données
    Bonjour,

    J'espere que vous pourrez m'aider car personnellement je ne vois pas du tout d'où vient le problème.
    Je récupère des données provenant d'un fichier CSV que j'insers par la suite dans une base de données Access.
    Je récupère bien toutes mes données exceptées celles d'une colonne. Cette colonne se compose de données textes et numériques. Dès lors, je ne récupère que les données numériques.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source=" & strPathtoTextFile & ";" & _
              "Extended Properties=""text;HDR=NO;FMT=Delimited"""
     
    objRecordSet.Open "SELECT * FROM [" & CommonDialog1.FileTitle & "]", _
              objConnection, adOpenStatic, adLockOptimistic, adCmdText
     
            Set cnx = New ADODB.Connection
     
            'Définition du pilote de connexion
            cnx.Provider = "Microsoft.Jet.OLEDB.4.0"
            'Définition de la chaîne de connexion
            cnx.ConnectionString = App.Path & "\TransferCsvToXml.mdb"
            'Ouverture de la base de données
            cnx.Open
     
    Do Until objRecordSet.EOF
        chaine = objRecordSet.Fields.Item(3)   'Juste pour tester!
    Loop         
    cnx.Close
    Merci d'avance pour votre aide.

    Valérie

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Points : 333
    Points
    333
    Par défaut
    Quel est le format de données du champ qui reçoit la colonne qui pose problème ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Dans Excel, c'est le format général. Pas de format spécifique.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Points : 333
    Points
    333
    Par défaut
    Oui, c'est pour ça qu'il peut y avoir du texte et des nombres dans la colonne et si le champ de base Access est en nombre, les textes ne sont pas pris en compte.
    Donc on ne retrouve dans la base de données que les chiffres qui étaient dans la colonne du fichier CSV.

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Le type de mon champ dans Access est "Text". Ce n'est pas ça le problème.
    En fait, je ne récupère pas du tout mes données textes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine = objRecordSet.Fields.Item(3)
    Dans chaine, je récupère "". Alors, que je devrais récupérer par exemple "ABC".

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    Si tu veux importer les informations d'une colonne qui contient à la fois des données numériques et texte, c'est le type majoritaire dans les 8 premières lignes qui définira le type de données à récupérer: les autres données de la colonnes seront considérées comme NULL (vide).
    Si la colonne contient 4 valeurs numériques et 4 valeurs texte, la requête renvoie 4 nombres et 4 valeurs NULL.

    une solution pourrait consister à activer l'option d'importation IMEX=1. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "extended properties=""text;IMEX=1""".
    Nota:
    Les données numériques seront importées comme du texte.


    michel

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    J'ai essayé IMEX=1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source=" & strPathtoTextFile & ";" & _
              "Extended Properties=""text;HDR=NO;FMT=Delimited;IMEX=1"""
    Ca n'a malheureusement rien donné. Je ne récupère toujours pas mes données textes. Y aurait-il autre chose à changer?

    PS : Merci beaucoup pour ton aide.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    Déjà je pense que tu devrais faire faire un découpage sémantique de ton fichier csv au lieu de connecter par ADO ... c'est fait pour ça

    Un csv c'est n lignes, avec n champs séparés par des ";" par ligne.

    Une ligne c'est des caractères terminés par chr(10) & chr(13) (ou l'inverse je ne sais plus)

    Donc ... split est ton ami !

Discussions similaires

  1. [VB6] récupération de données d'un array
    Par jean_jean dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/04/2012, 12h11
  2. [VB6] Problème récupération de données
    Par valie dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 29/08/2006, 12h36
  3. [VB6]XML Création de fichier et récupération de données
    Par batmat86 dans le forum VB 6 et antérieur
    Réponses: 36
    Dernier message: 02/04/2006, 12h38
  4. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo