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 :

Probleme de redondance [WD18]


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Points : 0
    Points
    0
    Par défaut Probleme de redondance
    j’ai un code permetant de creer les clients dans mon projet,le probleme est que le nom d’un client est creer plusieur fois et pourtant dans mon code j’ai mis un controle pour eviter la redondance, voici mon code, puis avoir quelque idees ? merci d’avance.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    		IF SAI_Nom="" THEN
    			Info("Merci de préciser le Nom")
    			RepriseSaisie(SAI_Nom)
    		END
     
    		IF SAI_Adress="" THEN
    			Info("Merci de préciser l'adresse")
    			RepriseSaisie(SAI_Adress)		
    		END
    		IF SAI_Mail="" THEN
    			Info("Merci de préciser le Mail")
    			RepriseSaisie(SAI_Mail)		
    		END
     
    		IF SAI_Telephone="" THEN
    			Info("Merci de préciser le numero de Telephone ")
    			RepriseSaisie(SAI_Telephone)	
    		END
    		sMonNom1=SansEspace(SAI_Nom)
     
    		bMaboo=Vrai
     
    		HLitRecherche(Client,IDClient,sMonNom1)
    		IF HTrouve(Client)=Vrai THEN
    			sMonNom2=SansEspace(Client.NomClient)
    			IF sMonNom1~=sMonNom2 THEN
    				Info("Ce Client existe déja dans la Base de données") 
    				RepriseSaisie(SAI_Nom)
    			END
     
    		END
     
    		IF bMaboo=Vrai THEN
    			//création du Client
     
    			HRAZ(Client)
    			Client.CodeClient=SAI_Code
    			Client.TypeClient=COMBO_Type_Client..ValeurAffichée
    			Client.RaisonSociale=SAI_Société
    			Client.NomClient=SAI_Nom
    			Client.Adresse=SAI_Adress
    			Client.Mail=SAI_Mail
    			Client.Telephone=SAI_Telephone
    			HAjoute(Client)
     
     
    			Ferme 
    		FIN
    	END

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Tu fais un HLitRecherche(..) du nom client en comparant avec l'ID, c'est peut-être le problème ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Lo² Voir le message
    Bonjour,

    Tu fais un HLitRecherche(..) du nom client en comparant avec l'ID, c'est peut-être le problème ?
    lorsque j’ai un hlitrecherche avec une clé de parcours il me donne le même résultat, en faisant la trace, htrouve renvoi vrai, il trouve bien le nom recherche et au niveau de la comparaison

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sMonNom2=SansEspace(Client.NomClient)
    			IF sMonNom1~=sMonNom2 THEN
    				Info("Ce Client existe déja dans la Base de données") 
    				RepriseSaisie(SAI_Nom)
    			END
    il ne se passe rien,

  4. #4
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour,

    Je pense que Lo2 tu m'es sur la piste...
    Tu recherches en comparant IDClient avec la variable snom1
    Ensuite tu initalises snom2 avec la rubrique NomClient
    et tu testes une egalité faible entre snom1 et snom2, cela me parait normal que le test ne fonctionne pas
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    En dehors des problèmes de recherche déjà relevés dans ce code, il me semble curieux d'empêcher la saisie de deux clients ayant le même nom.
    Comment fais-tu avec les homonymes ? Il doit exister en France un grand nombre de Martin, Dupont...Même le couple nom/Prénom n'est pas discriminant.

    Tatayo.

  6. #6
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 525
    Points
    2 525
    Par défaut
    En effet, je rejoins Tatayo.

    D'autant qu'on oblige dans son appli à saisir un Mail et un n° de tél. (assez contraignant d'ailleurs, les deux ensemble)

    Dans ce cas il faut tester même nom ET Même mail ET même Tél.
    Ainsi c'est cohérent.
    Sinon ....

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Points : 0
    Points
    0
    Par défaut
    Merci, a vous pour suggestion,

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Points : 0
    Points
    0
    Par défaut
    voila mon code en totalite,

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     bMaboo est un booléen=Faux
    sMonNom est une chaîne=""
    sMonNom1 est une chaîne=""
    sMonNom2 est une chaîne=""
     
    IF COMBO_Type_Client..ValeurAffichée="" THEN
    	Info("Merci de préciser le type de client")
    	RepriseSaisie(COMBO_Type_Client)
    ELSE IF COMBO_Type_Client..ValeurAffichée~="SOCIETE" THEN
     
    	IF SAI_Société="" THEN
    		Info("Merci de préciser la Société")
    		RepriseSaisie(SAI_Société)		
    	END
    	IF SAI_Nom="" THEN
    		Info("Merci de préciser le Nom")
    		RepriseSaisie(SAI_Nom)
    	END
     
    	IF SAI_Adress="" THEN
    		Info("Merci de préciser l'adresse")
    		RepriseSaisie(SAI_Adress)		
    	END
    	IF SAI_Mail="" THEN
    		Info("Merci de préciser le Mail")
    		RepriseSaisie(SAI_Mail)		
    	END
     
    	IF SAI_Telephone="" THEN
    		Info("Merci de préciser le numero de Telephone ")
    		RepriseSaisie(SAI_Telephone)	
    	END
    	sMonNom=SansEspace(SAI_Société)
     
     
    		HLitRecherche(Client,RaisonSociale,sMonNom)
    		IF HTrouve(Client)=Vrai THEN
    			sMonNom2=SansEspace(Client.RaisonSociale)
     
    			IF sMonNom~=sMonNom2 THEN
    				Info("Ce Client existe déja dans la Base de données")
    				RepriseSaisie(SAI_Société)
    			END
     
    		END
    		bMaboo=Vrai
     
    		IF bMaboo=Vrai THEN
    			//création du Client
     
    			HRAZ(Client)
    			Client.CodeClient=SAI_Code
    			Client.TypeClient=COMBO_Type_Client..ValeurAffichée
    			Client.RaisonSociale=SAI_Société
    			Client.NomClient=SAI_Nom
    			Client.Adresse=SAI_Adress
    			Client.Mail=SAI_Mail
    			Client.Telephone=SAI_Telephone
    			HAjoute(Client)
     
    			Ferme 
    		FIN
    	ELSE
    		IF SAI_Nom="" THEN
    			Info("Merci de préciser le Nom")
    			RepriseSaisie(SAI_Nom)
    		END
     
    		IF SAI_Adress="" THEN
    			Info("Merci de préciser l'adresse")
    			RepriseSaisie(SAI_Adress)		
    		END
    		IF SAI_Mail="" THEN
    			Info("Merci de préciser le Mail")
    			RepriseSaisie(SAI_Mail)		
    		END
     
    		IF SAI_Telephone="" THEN
    			Info("Merci de préciser le numero de Telephone ")
    			RepriseSaisie(SAI_Telephone)	
    		END
    		sMonNom1=SansEspace(SAI_Nom)
     
    		bMaboo=Vrai
     
    		HLitRecherche(Client,IDClient,sMonNom1)
    		IF HTrouve(Client)=Vrai THEN
    			sMonNom2=SansEspace(Client.NomClient)
    			IF sMonNom1~=sMonNom2 THEN
    				Info("Ce Client existe déja dans la Base de données") 
    				RepriseSaisie(SAI_Nom)
    			END
     
    		END
     
    		IF bMaboo=Vrai THEN
    			//création du Client
     
    			HRAZ(Client)
    			Client.CodeClient=SAI_Code
    			Client.TypeClient=COMBO_Type_Client..ValeurAffichée
    			Client.RaisonSociale=SAI_Société
    			Client.NomClient=SAI_Nom
    			Client.Adresse=SAI_Adress
    			Client.Mail=SAI_Mail
    			Client.Telephone=SAI_Telephone
    			HAjoute(Client)
     
     
    			Ferme 
    		FIN
    	END

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Sauf que... ta recherche n'est toujours pas bonne.
    En gros, si l'utilisateur saisi Dupont dans le nom, tu cherches un client dont l'ID est Dupont, et ensuite tu compares le nom de ce client avec ce qui est saisi. Tout faux, comme te l'a indiqué Lo². Si tu cherches un nom, la recherche doit porter sur le nom.
    Ensuite tu ne fais la recherche que sur le nom, donc tu ne peux pas avoir 2 clients avec le même nom. C'est dommage, vu le nombre d'homonyme existants.. Mais ça aussi on te l'a déjà indiqué.

    Tatayo.

    P.S. rendre la saisie de l'email et du téléphone obligatoire, c'est aussi très limite. Quid des clients sans email (et oui, ça existe toujours), sur liste rouge...

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Sauf que... ta recherche n'est toujours pas bonne.
    En gros, si l'utilisateur saisi Dupont dans le nom, tu cherches un client dont l'ID est Dupont, et ensuite tu compares le nom de ce client avec ce qui est saisi. Tout faux, comme te l'a indiqué Lo². Si tu cherches un nom, la recherche doit porter sur le nom.
    Ensuite tu ne fais la recherche que sur le nom, donc tu ne peux pas avoir 2 clients avec le même nom. C'est dommage, vu le nombre d'homonyme existants.. Mais ça aussi on te l'a déjà indiqué.

    Tatayo.

    P.S. rendre la saisie de l'email et du téléphone obligatoire, c'est aussi très limite. Quid des clients sans email (et oui, ça existe toujours), sur liste rouge...
    Un grand merci, a tous sa marche, a la place de idclient j’ai remplacer le nomclient, , pour les homonyne vous avez raison, alors j’ai mis le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ouinon("ce client existe dejas","voulez-vous l’ajouter"
    ,

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Sauf que... le client n'existe peut-être pas encore, vu que tu ne compares que le nom !
    Si ton utilisateur saisi Martin Jean dans le 75, et que tu trouves un Martin Eric dans le 38, tu vas lui dire que le client existe déjà, alors que les deux n'ont rien en commun, à part leur patronyme.
    Donc encore une fois non, comparaison du nom seul ne suffit pas.

    Tatayo.

  12. #12
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Je trouve cette discussion assez affligeante en ce sens qu'une fois de plus, alors que des intervenants ont mis le doigt sur LE problème, l'auteur du fil et donc le demandeur n'en tient pas compte.

    @ beauregard12

    Vous devez absolument relire la doc sur les instructions de base HF et faire quelques exercices pour en 'saisir' intuitivement le fonctionnement.
    Je n'utilise pas HF, mais faire une recherche avec une clé XYZ sur l'identifiant automatique, c'est vraiment grave et ne pas réagir correctement quand on vous le signale ...
    Je suppose que vous retombiez toujours sur le premier (et éventuellement le seul) enregistrement de votre fichier. A tester.

    Pour le reste, est-il nécessaire d'alerter votre opérateur si un second Dupond apparaît dans la base ?
    Si oui, alors faites le travail pour lui et faites le convenablement, càd ne vous contentez pas des suggestions que l'on vous fait ici mais potassez le "dédoublonnage".
    Et n'interpellez l'opérateur que quand il est quasi certain qu'il s'agit d'un 'doublon'.

    Pour info, en France, avec une population de 66,6 millions d'individus fin 2015, le patronyme le plus fréquent est "Martin" avec une estimation de 236.000 occurrences.
    Vous êtes au Congo-Brazzaville, ce qui implique vraisemblablement d'autres statistiques en matière de fréquence des patronymes ainsi que d'autres pratiques de regroupement familial qu'en Europe, et influera donc sur les paramètres à mettre en œuvre pour le dédoublonnage.
    On peut imaginer plusieurs frères et sœurs ou parents et enfants adultes partageant la même adresse, la même ligne téléphonique fixe etc, ce qui n'est déjà pas rare dans nos campagnes ou notamment en Espagne où les enfants continuaient à vivre sous le toit parental au-delà de l'âge de 30 ans, même en ayant un travail.
    Cela s'est accentué et s'est étendu aux pays européens touchés par la crise, où des enfants reviennent vivre sous le toit parental suite à un licenciement.

    Enfin, il y a encore du travail à faire sur votre code : toute une partie existe en double, ce qui sera source de problème à l'avenir lors de la maintenance et suppose maintenant deux fois plus de tests.
    Par exemple, tous les tests sur les saisies identiques pourraient être regroupés en une seule séquence de code. De même pour le HAjoute.

    Puisque le problème d'origine est résolu, vous devriez cocher la case ad-hoc pour passer la discussion en "Résolu".

    Bon travail

    Hemgé

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Points : 0
    Points
    0
    Par défaut
    Merci pour vos conseil,

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/08/2015, 15h32
  2. probleme supprimer redondance dans un fichier
    Par Isabella83 dans le forum C
    Réponses: 5
    Dernier message: 06/02/2013, 11h07
  3. Probleme de redondance
    Par Montor dans le forum Bases de données
    Réponses: 16
    Dernier message: 26/04/2009, 12h03
  4. [MySQL] probleme de redondance d'enregistrement
    Par !NyThaX&& dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/01/2008, 08h27
  5. probleme hashcode redondant ds une hasmap
    Par Joe54 dans le forum Langage
    Réponses: 3
    Dernier message: 01/10/2006, 12h02

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