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

WinDev Discussion :

Export de données Hyperfile vers MySQL [WD14]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Export de données Hyperfile vers MySQL
    Bonjour à tous,
    Après une longue recherche infructueuse sur ce forum et sur celui de pc-soft,
    je me pose une question qui en contient plusieurs:
    (d'avance pardon si cette question a déjà été posée, je crois que non)

    Je suis développeur débutant et j'utilise WIN14;
    je souhaite exporter les données d'une base hyperfile classique vers une base MySQL;
    j'ai donc installé le module d'accès natif à MySQL (j'ai dû trouver la libmysql.dll sur google car elle était manquante...),
    puis créé une base MySQL avec phpMyAdmin,
    j'ai ensuite créé la structure de cette base selon la description de mon analyse grâce à HCréationSiInexistant("*").
    J'ai donc 2 bases de structures identiques, l'une en HF contenant mes données (assez peu, les .fic sont légers), l'autre en MySQL, vide.

    J'aimerais parcourir tous les .fic de ma base HF (sans doute grâce à HListeFichier?), les lire, et copier chaque enregistrement dans la table MySQL correspondante mais je ne sais pas comment m'y prendre.

    Devrais-je passer chaque enregistrement ou même chaque .fic dans un tableau, (si oui, comment? Je n'arrive pas à gérer les tableaux en WLangage)
    puis copier ce tableau dans une table MySQL avec un "ChangeConnexion" suivi d'un "HExecuteRequete (INSERT...)"?
    Y'a-t-il une instruction WLangage spécifique qui me ferait gagner du temps, un peu comme HCréationSiInexistant mais pour les données?

    Merci d'avance, désolé pour ces questions en vrac, j'essaie de faire un tir groupé..

  2. #2
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Hlistefichier renvoie les fichiers présent dans l'analyse.
    Pour chaque fichier présent dans la chaine renvoyé par Hlistefichier (utilise Extraitchaine() pour les récupérer) tu effectue une boucle et tu insères dans la base Mysql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    w_liste_fichier = HListeFichier()
    w_sousfichier = ExtraitChaîne(w_liste_fichier,rangPremier,RC)
    TANTQUE w_sousfichier <> EOT
         //Lecture du fichier + insertion dans la base Mysql
         POUR TOUT {w_sousfichier,indfichier}
               //.....
         FIN
         w_sousfichier = ExtraitChaîne(w_liste_fichier,rangSuivant,RC)
    FIN
    Aucune aide par MP, utilisez le forum.

  3. #3
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour
    Tu peux facilement faire ça avec HCopieEnreg (voir l'aide)

    Je suppose que chaque fichier est décrit une fois dans l'analyse

    Admettons que ton fichier soit décrit en HF dans l'analyse tu créés un alias de ce fichier et tu fais pointer cet alias sur une autre connexion (mysql dans ton cas)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HAlias(TONFICHIER, TONFICHIER_MySql)
    HChangeNom(TONFICHIER_MySql, "TONFICHIER_MySql")
    TONFICHIER_MySql..connexion = Cnx_MySql
    et la description de Cnx_MySql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Cnx_Mysql est une Connexion
     
    Cnx_Mysql..Serveur = "localhost"
    Cnx_Mysql..Provider = hAccèsNatifMySQL
    Cnx_Mysql..Utilisateur = "user"
    Cnx_Mysql..MotDePasse = "pwd"
    Cnx_Mysql..BaseDeDonnées = "tabase"
    Cnx_Mysql..Accès = hOLectureEcriture
    et la copie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    POUR TOUT TONFICHIER
    	HCopieEnreg(TONFICHIER_MySql, TONFICHIER)
    	HAjoute(TONFICHIER_MySql)
    FIN
    Code vite fait, donc à corriger si j'ai fais des betises, mais le principe est là

    et ceci pour tous tes fichiers dans la boucle donnée par J0r_x

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup à tous les deux!

    Je vais tester tout ça et j'espère, bientôt mettre cette conversation en "résolu".

    Cordialement.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    eh bien j'ai finalement réussi grâce à vos conseils, mon programme marche parfaitement, vous m'avez fait gagner 2 semaines sur mon planning (je fais un stage de 3 mois pour valider une formation AFPA) et je vais pouvoir m'attaquer à webdev pour un projet qui utilisera MySQL;

    en espérant que ça servira à d'autres, voilà mon code:

    première procédure qui parcourt et copie un .fic vers une table MySQL

    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
     
    PROCEDURE pg_Export_donnees_vers_MySQL(TableHF)
    alias est une Sources de Données	
    HAnnuleAlias(alias)
    HAlias(TableHF,"alias")
    HChangeNom(alias,TableHF)
    HChangeConnexion(alias,Cnx_prosygma)
    HLitPremier(TableHF)
    TANTQUE PAS HEnDehors(TableHF)		
    	HCopieEnreg(alias,TableHF)
    	SI	 HAjoute(alias) ALORS
    		Info(alias)
    	SINON 
    		Erreur(HErreurInfo(hErrComplet))
    		FinProgramme()	
    	FIN	
    	HLitSuivant(TableHF)
    	HAnnuleAlias("*")
    FIN
    puis seconde procédure qui parcourt la base HyperFile et appelle la première:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    PROCEDURE pg_Export_TOTAL_vers_MySQL()
    HOuvreConnexion(Cnx_HF)
    HChangeConnexion("*",Cnx_HF)
    w_liste_fichier,w_sousfichier est une chaîne
    w_liste_fichier = HListeFichier()
    w_sousfichier = ExtraitChaîne(w_liste_fichier,rangPremier,RC)
    TANTQUE w_sousfichier <> EOT
    	pg_Export_donnees_vers_MySQL(w_sousfichier)
    	w_sousfichier = ExtraitChaîne(w_liste_fichier,rangSuivant,RC)
    FIN
    merci encore!

    rafar

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    Juste une chose, ton HAnnuleAlias("*") est mal placé, il devrait être en dehors de ta boucle
    D'ailleurs visiblement il ne fait rien sinon tu aurais un plantage

    Il me semble que le paramètre "*" ne permet pas d'annuler tous les alias, il faut spécifier le nom de l'alias (ou utiliser HAlias("*"))
    Mais dans ton cas il suffit de mettre HAnnuleAlias(alias) en dehors de ta boucle

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Yes! J'ai été un peu vite à poster, j'étais bien content d'avoir réussi...

    En fait j'avais fait AUSSI ce dont tu parles:
    j'ai un HAnnuleAlias(alias) en tout début de procédure, avant la boucle...
    j'aurais dû effacer l'autre avant de mettre celui-là,
    manque de rigueur...
    en tout cas, bien observé!

    thanks!

    Par contre, j'ai une autre question, qui mérite sans doute une autre discussion..

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

Discussions similaires

  1. TRansferer une base de données hyperfile vers Mysql
    Par Nouhola dans le forum HyperFileSQL
    Réponses: 8
    Dernier message: 25/06/2015, 20h22
  2. Exporter contenu base HyperFile vers MySQL
    Par pixel016 dans le forum WinDev
    Réponses: 1
    Dernier message: 17/01/2011, 13h24
  3. Réponses: 4
    Dernier message: 14/05/2009, 17h35
  4. Exportation de base de donnée exchange vers MySQL
    Par Natsume dans le forum Outils
    Réponses: 3
    Dernier message: 02/11/2006, 08h57
  5. [Excel] Exportation de donnée excel vers MySQL
    Par yoda7666 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/11/2005, 16h18

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