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

HyperFileSQL Discussion :

Hyper File et le CSV


Sujet :

HyperFileSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Par défaut Hyper File et le CSV
    Bonjour a tous,

    J'espère ne pas être trop long, mais je vais essayer de vous poser mon problème et les idées que j'ai tentées... sans succès.

    Je dois importer des informations .csv dans mon HF.

    Lorsque j'utilise la fonction "HImporteTexte", les enregistrements de ma base sont bien remplis, mais les champs sont mélangés. !!?? Si, si! La 8ième colonne passe en 6ième position, et à partir de la 15ième, tous les champs qui suivent sont inversés.
    De plus, comme je dois pouvoir comparer les valeurs de cellules de mon fichier HF avec les valeurs de mon fichier .csv (le but étant de vérifier les mise à jours de fichier .csv) la technique du "HImporteTexte" me paraît la moins adéquate.

    bref.

    j'ai tenté donc, en utilisant OLE automation, d'enregistrer-sous mon fichier .csv en fichier .xls, ainsi pouvoir copier mes champs via "xlsOuvre" puis utiliser la procédure MaTable.MonChamp = xlsDonnées(Fichier, NumLigne, NumColonne)
    Ca marche très bien... sauf que..
    La conversion du .csv en .xls fausse mes valeurs :

    Par exemple un numéro de permis de conduire à 12 chiffres devient : 9E10+11
    Donc, quand je veut reprendre mes infos pour les traiter, le numéro de permis devient 900000000000.
    De plus, mes dates sont transformées en "nombre de jours depuis 01/01/1900". Quand je compare les champs de mes deux fichiers pour contrôler les mises à jour faites dans le fichier de départ, forcément ça sort faux : Comparer 08/01/2008 et 39455... c'est pas pareil.

    J'ai, bien sûr, changé le "NumberFormat" (toujours via OLE, et même manuellement), Mais ça ne change rien... mes valeurs sont toujours fausses.


    j'ai alors tenté le "csvVersTableau", même si ca revient à transférer mon fichier .csv vers un tableau que je dois après transférer vers ma table HF temporaire, pour pouvoir changer l'ordre des champs et transférer cette table temporaire dans ma table HF finale (qui contient des champs supplémentaires...). Mais là, je ne sais pas comment faire "tableau vers Hyper File"...


    Si vous avez une technique qui pourrait m'aider et que vous trouvez le temps de ma la révéler, je vous en serais très reconnaissant...

    Merci déjà, aux personnes qui m'ont lu, même si elles n'ont pas la réponses.

  2. #2
    Membre Expert
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Si le fichier est un .csv le mieux est de conserver ce format sans passer par un fichier excel.

    De nombreuses persopnnes se sont déjà plaintes de la fonction himportetexte pas toujours a juste titre mais parfois si.

    Moi je ne l'utilise pas, peut etre à tort. Dès que j'ai nun fichier CSV je préfère utiliser la fonction flitligne associée à la fonction extraitchaine ou encore une à boucle POUR TOUTE CHAINE sElement DE sChaine SEPAREE PAR sep.

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Par défaut
    Super, ca y est!!! Merci Mogwai. Je me suis inspiré de ce que tu m'as dit et jai fait un truc comme ca :
    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
    22
    23
    24
    25
    26
    SI IdFichier<>-1 ALORS 
     
    	VarSorti est un booléen = Faux // pour sortir de la boucle
     
    	BOUCLE
    		LitLigne est une chaîne = fLitLigne(IdFichier)
     
    		Liste_Clients.Prénom = ExtraitChaîne(LitLigne, 1, ";")
    		Liste_Clients.Nom	= ExtraitChaîne(LitLigne, 2, ";")
    		Liste_Clients.Date_de_Naissance = ExtraitChaîne(LitLigne, 3, ";")
    		HAjoute(Liste_Clients)
     
    		SI fLitLigne(IdFichier) = EOT ALORS 
    			VarSorti = Vrai
    		FIN
     
    	// Doit-on sortir de la boucle
    	SI VarSorti = Vrai ALORS SORTIR
     
    	FIN	
     
         Info ("c'est cool")
    fFerme(IdFichier)
    SINON
    	Info("pas cool")
    FIN
    Ca marche... ma table est pleine et les infos sont bonnes!!
    (le bonheur!)

  4. #4
    Membre Expert Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Par défaut
    Juste pour être sûr tu avais bien rempli le paramètre qui permet de lister les rubriques? Je dit ça parce que sinon il utilises l'ordre PHYSIQUE et non l'ordre logique. Il y a une option dans wdmap afin de voir les rubriques dans l'ordre physique.

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Par défaut
    Salut,

    En fait j'utilise la forme :
    Liste_Clients.Prénom = ExtraitChaîne(LitLigne, 1, ";")

    Comme le "1" correspond au numéro de rang, j'ai listé à la main toutes mes rubriques et je les ai mises dans ma base par rapport à leur rang... Oui, c'est pas forcément la meilleure solution, mais bon...

    Comme mon .csv avait la première ligne avec le nom des rubriques, j'ai du lire le fichier qu'à partir de la seconde ligne pour ne pas avoir les nom des champs dans ma table.

    C'était un peu long... Et encore, je n'avais que 42 rubriques!
    En tout cas merci pour cette option, je vais la chercher dans le wdmap.. parce que si al prochaine fois j'ai 200 rubriques... ca sera plus la même chose!

  6. #6
    Membre Expert Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Par défaut
    J'ai oublié de préciser que je parlais de HImporteTexte.

  7. #7
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Par défaut Erreur signaler par fonction fLitLigne
    je rencontre un enorme probleme avec ma fonction fLitLigne qui me signale une erreur pourtant ecrit avec la bonne syntaxe. voici le code:
    MyFile = fOuvre(MyFile, foLectureEcriture)
    SI MyFile<>-1 ALORS

    VarSorti est un booléen = Faux // pour sortir de la boucle

    BOUCLE
    LitLigne est une chaîne = fLitLigne(MyFile)

    pays.country = ExtraitChaîne(LitLigne, 1, ";")
    pays.population = ExtraitChaîne(LitLigne, 2, ";")
    pays.area = ExtraitChaîne(LitLigne, 3, ";")
    pays.density = ExtraitChaîne(LitLigne, 4, ";")
    HAjoute(pays)

    SI fLitLigne(MyFile) = EOT ALORS
    VarSorti = Vrai
    FIN

    // Doit-on sortir de la boucle
    SI VarSorti = Vrai ALORS SORTIR

    FIN

    Info ("c'est cool")
    fFerme(MyFile)
    SINON
    Info("pas cool")
    FIN

    Pouvez vous me proposer des solutions a ce probleme? merci d'avance

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    989
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 989
    Par défaut
    Bonjour
    Résolu.... Comment ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requêtes ODBC Hyper File 7 dans Csv
    Par Jean-Pierre49 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/02/2008, 08h00
  2. inconvénients de l'hyper file classic
    Par rollins_ng dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 17/08/2006, 13h16
  3. Changer le chemin d'une hyper file
    Par mael94420 dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 28/07/2006, 14h16
  4. Copier coller hyper file
    Par mael94420 dans le forum WinDev
    Réponses: 6
    Dernier message: 12/07/2006, 09h21
  5. [hyper file client/serveur] problème de droit
    Par routmout dans le forum HyperFileSQL
    Réponses: 3
    Dernier message: 17/06/2006, 21h48

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