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 :

Probléme de doublons au moment d'affichage des données importées vers HyperFile [WD15]


Sujet :

WinDev

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 96
    Par défaut Probléme de doublons au moment d'affichage des données importées vers HyperFile
    Bonjour,

    J’ai réalisé un logiciel qui sert a remplir une base de donné a partir d’un fichier texte. Au moment de l’affichage des données du fichier sur la table j’aimerais bien qu’il ne m’affiche pas de double.
    Voilà le code que j’ai met, mais il n’est pas bien marché.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    HLitRecherchePremier(BL,Referanceclient,COL_Referanceclient)
    SI HTrouve(BL) ALORS
    	Info("Le reference existe deja")
    SINON
    	FichierVersEcran(WIN_Window1)
    	HImportText(BL, "C:\om_sage\TEST2.txt", "Referanceclient", TAB + Charact(127) + """" + Charact(127) + CR, hImpNoDelimiter)
    	TableAffiche(TABLE_BL,taStart)	
    IF ErrorOccurred THEN
    	Error(HErrorInfo())
    END
    FIN
    Avant de maitre ce code j'ai met le code HGEREDOUBLONS sans resultat.

    Merci pour votre aide.

  2. #2
    Membre Expert Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Par défaut
    Hello bestmoroco,
    Je vais rebondir sur ce que bon nombre d'entre nous t'ont déjà écrit. Au vu de tous tes messages, je te dis cela:
    - le forum n'est pas là pour te 'pondre du code'
    - le forum n'est pas là pour t'apprendre la programmation
    - le forum n'est pas là pour te faire ton logiciel
    Aussi, et non pas que je ne veuille pas t'aider, bien au contraire, serait-il judicieux que tu relises les cours d'auto-formation ainsi que (re)faire par petit exercice certains points comme la lecture de fichier textes, l'affichage des tables, la gestion des fichiers de données, etc...
    Ceci est la logique d'analyse de besoins, traduite ensuite par de la logique de programmation... Avant cela, difficile de faire autrement que de poser des questions comme tu le fais...

    // **********************************
    Pour ce qui est de ta question, comment veux-tu trouver une référence dans une table qui est soit vide, soit remplie, et si remplie, tu ne parcours pas la table (ou faire une recherche sur la colonne) pour savoir si la référence lue dans le fichier texte existe déjà?
    //**********************************
    Ceci dit, il reste néanmoins une multitude de controle à faire encore...

  3. #3
    Membre émérite
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Par défaut
    Bonjour
    Il est clair que tu cherches dans plusieurs directions.
    Ce qui serait intéressant c'est de trouver où tu pêches dans ta logique de programmation.
    Reprenons ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HlitRecherchepremier(BL,Referanceclient,COL_Referanceclient)
    Poses-toi les questions :
    Que contient avant de lancer cette ligne le fichier de la base de données BL ? Est-il rempli ?
    Que contient la table dans laquelle se trouve la colonne COL_Referanceclient ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FichierVersEcran(WIN_Window1)
    	HImportText(BL, "C:\om_sage\TEST2.txt", "Referanceclient", TAB + Charact(127) + """" + Charact(127) + CR, hImpNoDelimiter)
    	TableAffiche(TABLE_BL,taStart)
    Alors là, je suis perplexe !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichierVersEcran(WIN_Window1)
    que contient ta fenêtre WIN_Window1 (quels champs) ?
    cela ne sert à rien de faire cela. regarde l'aide en ligne de Fichierversecran et tu verras ton erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HImportText(BL, "C:\om_sage\TEST2.txt", "Referanceclient", TAB + Charact(127) + """" + Charact(127) + CR, hImpNoDelimiter)
    Es-tu dans une boucle ou bien le lances-tu une fois ? cela change énormément ton résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableAffiche(TABLE_BL,taStart)
    Soit ta table est une table fichier et tu veux juste l'actualiser avec les données importées : OK (mais alors je ne comprends pas l'utilité de HlitRecherchepremier.....)
    Soit c'est une table mémoire et tu n'as fait aucune modif : quelle utilité ????

    Dans tous les cas, ta manière de programmer semble tout à fait brouillon et inappropriée.
    Cela n'a rien à voir avec le langage Windev et les messages que tu reçois en sont la conséquence.

    Quelle que soit la méthode de programmation que tu as apprise (si tu en as appris une), commence par faire l'analyse de ton besoin, décris les schémas correspondants.

    Bon apprentissage
    Gancau

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 96
    Par défaut
    J'ai essayé d'utilse toutes vos conseils et j'ai essayé de reecrire un autre code mais sans aucun progresse, j'ai essayé de comparé les chaines et importer les données et afficher s'il n'existe pas ou bien afficher un message d'erreur s'il existe déjà, mais maintenant j'ai rien de tous ça il m'affiche le message d'erreur méme s'il n y'a pas aucune donnée sur la table.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    SélectionDonnées is boolean = Faux   // Cest une variable globale
     
    SELON SélectionDonnées
    	CAS Vrai
    Info("La sélection à déjà été effectuée !")
    		RETOUR
    	CAS Faux
    		X is boolean
    		Y is boolean
     
    		X = StringCompare(BL.Referanceclient,TABLE_BL.COL_Referanceclient)
    		Y = HLitRecherche(BL,Referanceclient,TABLE_BL.COL_Referanceclient)
    		SI X =True ET Y = True ALORS
    			POUR i = 1 A TableOccurrence(TABLE_BL)
    				BL.Referanceclient=COL_Referanceclient[i]
    				HImportText(BL, "C:\om_sage\TEST2.txt", "Referanceclient", TAB + Charact(127) + """" + Charact(127) + CR, hImpNoDelimiter)
    				IF ErrorOccurred THEN
    				Error(HErrorInfo())
    				END
    			FIN
    		SINON
    		Erreur("Attention !!, la saisie de ce réference à été bien éffectuée, Veuillez mettre à jour le fichier TEXTE..... ")
    			Ferme()
    		FIN
     
    		gbSélectionDonnées = Vrai
    FIN
    //Affichage de la table fichier
    TableAffiche(TABLE_BL,taStart)
    Merci

  5. #5
    Membre Expert
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Par défaut
    Bonjour,

    je vous conseille d'utiliser le mode pas à pas (débogage) et à chaque ligne de code exécutée, vous devriez suivre le contenu de ErreurInfo dans le debogueur (Voir aide Windev):
    Ensuite 2 comportements possibles :
    - le programme plante en pas à pas et là vous saurez quelle est la ligne qui pose probleme
    Ou alors
    - l'erreur n'est pas fatale et vous pourrez savoir ce qui bloque en visualisant le contenu de ErreurInfo ....

    Si il n'y a aucune erreur, mais que le fonctionnement n'est pas celui attendu, c'est que votre code n'est pas bon .... alors il faut le repenser

    Prenez le temps de comprendre votre code et relisez vous.
    Si votre compréhension du code est approximative celui-ci a peu de chances de fonctionner ....

    Bonne suite.

  6. #6
    Membre Expert Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Par défaut
    Hello,
    Au travers du code fourni (non exhaustif), tu prends la problèmatique à l'envers...
    Il faut partir de la source pour aller vers la destination. La source est donc ton fichier "C:\om_sage\TEST2.txt".
    Il faut donc le lire séquentiellement ligne par ligne (je te laisse le soin de nous faire voir ton code sur le sujet).
    Cette lecture se fait au travers d'une boucle tant que la fin de fichier n'est pas atteinte... Adjoints-y une trace afin de controler ce que tu lis, c'est rassurant et très formateur (cela évite de croire qu'on fait tout bien alors que la réalité peut être tout autre).
    Cela fait, dans cette boucle, il ne te reste plus qu'a effectuer un controle d'existance de ton information: existe-t-elle dans mon fichier HFCS?
    Pour ce faire:

    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
     
    si pas HRecherche(BL,Referanceclient,ReferanceclientLue_OM_SAGE) alors
       // la référence n'existe pas, à inclure dans le fichier HFCS
       //
       / on vide la structure du fichier BL
       hraz(BL)
       // on affecte les valeurs des champs du fichier BL
       BL.Referanceclient = ReferanceclientLue_OM_SAGE
       // on enregistre les données
       si pas hajoute(BL) alors
          // tient, y'a erreur, gestion à faire...
     
       sinon
          // Ok, insertion réussie
     
       fin
    sinon
       // la référence existe, que faire?
     
     
    fin
    // on reaffiche la table après le traitement de lecture...
    TableAffiche(TABLE_BL,taStart)
    Voilà comment tu devrais faire, normalement, et selon tes explications....
    Je vais peut-être en faire hurler certains de te donner un bout de code, que je considère plus comme une méthode (il en existe d'autres)...
    Maintenant, merci pour tout ceux qui ont participé à ta résolution de nous dire si le problème est résolu ou non....
    A te lire...

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 96
    Par défaut
    Eric CHARIEAU excuse moi pour ne pas te remercie car j'etais dessus pour cela je n'ai pas essayé de voir les reponses, pour le code ca marche trés bien et je n'ai aucun chose a te dire plus de mercie.

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

Discussions similaires

  1. [CR 10] affichage des données importées
    Par roi2010 dans le forum Débuter
    Réponses: 1
    Dernier message: 15/01/2010, 12h20
  2. [MySQL] Problème Affichage des données
    Par buzzchewan dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/02/2007, 16h05
  3. [MySQL] Problème avec affichage des données d'une base MySQL
    Par leclone dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/12/2006, 13h40
  4. [MySQL] Problème d'affichage des données!
    Par ghyosmik dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/09/2006, 16h43
  5. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 18h07

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