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 :

Remplissage de fichier depuis une table mémoire - problème de doublon


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 138
    Points
    138
    Par défaut Remplissage de fichier depuis une table mémoire - problème de doublon
    Bonjour à tous,

    Voila, j'ai un probléme de doublon lors du remplissage d'un fichier à partir d'une table mémoire.

    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
    // Mise à jour de la base Clients
    POUR i=1 A TableOccurrence(Table_Client_Import)
     
    	TableSelectPlus(Table_Client_Import,i)
     
    	Client.Code_Client = Table_Client_Import.Code_Client
    	Client.Nom_Titulaire = Table_Client_Import.Nom_Titulaire
       ....
     
    	// Recherche l'enregistrement
    	HLitRecherchePremier ( Client, Code_Client, Table_Client_Import.Code_Client)
     
    	SI HTrouve () ALORS
    		HModifie (Client)
    	SINON
    		HAjoute(Client)
    	FIN
    FIN
    Si je n'utilise pas la fonction HLitRecherchePremier et donc que je me contente d'un HAjoute(Client) tout fonctionne. Dans le cas contraire par moments il me détecte un doublon (meme avec le fichier client vide au départ) au moment de l'importation.

    Il y a sûrement une meilleure façon de régler de l'ajout ou la mise à jour d'un fichier au moment de l'importation, mais je débute en WinDev.

    Par avance merci pour toute réponse.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Code_Client est une clé unique ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table_Client_Import.Code_Client[i]
    ???

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 138
    Points
    138
    Par défaut
    Bonjour hegros,

    Oui Code_Client est une clé unique et justement c'est sur cette clé que j'ai le probléme de doublon.

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    En fait quand tu enregistres un client avec comme Code_Client =1 ( HAjoute) par exemple, tu ne peux après enregistrer encore un client avec comme Code_Client égal à 1

    Pareil pour HModifie. Tu ne peux pas par exemple faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Client.Code_Client =1
    HModifie(Client)
    Si il existe déja un Client avec un Code_Client égal à 1.

    Puisqu'il s'agit d'une clé unique.
    Tu vois ce que je veux dire ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 138
    Points
    138
    Par défaut
    Je ne comprend pas trop ta réponse, mais mon exemple manque surement d'explication.

    Le champ Code_Client se remplis via la table mémoire elle même remplie via l'importation d'un fichier texte.

    Le champ Table_Client_Import.Code_Client ne contiens pas de doublon.

    Dailleur si je fait juste un HAjoute(Client) sans HLitRecherchePremier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Mise à jour de la base Clients 
    POUR i=1 A TableOccurrence(Table_Client_Import) 
     
       TableSelectPlus(Table_Client_Import,i) 
     
       Client.Code_Client = Table_Client_Import.Code_Client 
       Client.Nom_Titulaire = Table_Client_Import.Nom_Titulaire 
       .... 
     
        HAjoute(Client) 
    FIN
    Dans ce cas je n'ai pas de probléme, mais je ne gère pas le cas des mises a jour d'un enregistrement.

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Il faut que tu sois sur que lorsque tu fais un HModifie que la valeur que tu mettras dans l'enregistrement Code_Client que tu souhaites modifier n'existe pas dans un autre enregistrement.

    Un doublon c'est typiquement cela.

    Je ne vois pas d'autres explication

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 138
    Points
    138
    Par défaut
    Avant tout merci pour tes réponses. Je suis sure que je n'ai pas de doublons dans le fichier, d'ailleurs dans le cas d'un Hajoute sans Hlitrecherchepremier sa fonctionne (évidement le fichier Client est vide au départ dans ce cas-là). C'est bien la preuve que les données sont correctes au départ non ?

    On dirait que la fonction Hlitrecherchepremier perturbe l'ordre de lecture de la table d'importation (Table_client_import) ce qui ne me paraît pas logique.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 138
    Points
    138
    Par défaut
    Je me réponds, j'ai eu un peux plus d'éclaircissements sur cette fonction.

    Je ne pensai pas que la commande Hlitrecherchepremier modifier l'affection de mes variables. Maintenant que j'ai modifié mon code en ce sens tout fonctionne parfaitement.

    J'ai déclaré une fonction locale pour l'affection de mes variables et j'ai modifié le code de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Mise à jour de la base Clients
    POUR i=1 A TableOccurrence(Table_Client_Import)
     
     TableSelectPlus(Table_Client_Import,i)
     
     // Recherche l'enregistrement
     SI HLitRecherchePremier( Client, Code_Client, Table_Client_Import.Code_Client) ALORS
      Charge_Fiche_Client() 
      HModifie(Client)
     SINON
      Charge_Fiche_Client()
      HAjoute(Client)
     FIN
    FIN

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

Discussions similaires

  1. [WD19] Ajout de données dans un fichier depuis une table
    Par mimi1255 dans le forum WinDev
    Réponses: 2
    Dernier message: 12/04/2014, 11h54
  2. Créer un fichier Excel et le remplir depuis une table MySQL
    Par sihamnet dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 13/10/2012, 22h24
  3. générer un fichier xml depuis une table avec data integrator BO
    Par explorateur dans le forum Alimentation
    Réponses: 0
    Dernier message: 19/01/2010, 14h22
  4. Produire un fichier plat depuis une table DB2
    Par LIANAZEL dans le forum AS/400
    Réponses: 3
    Dernier message: 05/12/2008, 18h18
  5. Génération de graphique depuis une table ou un fichier ?
    Par patsak dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 03/06/2008, 12h29

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