| |
Posté le 22 février 2019 - 11:08 |
Bonjour tout le monde, Je suis tout nouveau dans le monde du code et mon responsable m'a demandé de créer une appli sur WinDev23 pour un inventaire de parc jusque là tout va bien mais je bloque sur un code pour gérer les doublons. J'ai fais une requête et sur mon code un HExecute mais ça ne fonctionne pas c'est peut être tout bête mais j'aurai besoin d'un petit coup de pouce. Je suis en reconversion pro donc soyez gentil avec moi
Voici mon code:
SI SansEspace(Nom)=""ALORS Erreur("Vous devez saisir un nom" ) SINON SI SansEspace(Prénom)=""ALORS Erreur("Vous devez saisir un prénom") Erreur ("Vous devez saisir un Service") HExécuteRequête(REQ_UTILISATEUR,hVérifieDoublon,ParamNom,ParamPrénom) HLitPremier(REQ_UTILISATEUR) SI HEnDehors(REQ_UTILISATEUR)= Vrai ALORS SINON Utilisateur.Nom=Nom Utilisateur.Prénom=Prénom Utilisateur.Service=Service SI HAjoute(Utilisateur)ALORS Info ("Utilisateur crée") SINON Erreur("Une erreur a été détectée pendant la récupération des données.") FIN FIN FIN FIN FIN
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Posté le 22 février 2019 - 13:00 |
Salut,
As tu moyen de nous donner le contenu de ta REQ_UTILISATEUR ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 299 messages Popularité : +16 (16 votes) |
|
Posté le 24 février 2019 - 14:34 |
SI SansEspace(Nom)=""ALORS Erreur("Vous devez saisir un nom" ) SINON SI SansEspace(Prénom)=""ALORS Erreur("Vous devez saisir un prénom") Erreur ("Vous devez saisir un Service")
Avant de répondre à votre question avant que vous postiez le code je vous conseille de revoir votre gestion de contrôle. Si vous continuez ainsi vous allez tellement indenter le code que vous allez finir en dehors de l'écran.
Essayez
SI SansEspace(Nom)=""ALORS Erreur("Vous devez saisir un nom" ) RepriseSaisie(Nom) FIN
SI SansEspace(Prénom)=""ALORS Erreur("Vous devez saisir un prénom") RepriseSaisie(Prénom) FIN SI Service..ValeurAffichée=""ALORS Erreur ("Vous devez saisir un Service") RepriseSaisie(Service) FIN
tant que vous y êtes donnez à vos objets des noms normalisés. WD propose une charte pour cela. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
Posté le 25 février 2019 - 08:51 |
Bonjour Geoffrey, voici ma requête
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
Posté le 25 février 2019 - 08:52 |
Bonjour Michel, je vous remercie pour toutes vos informations qui vont bien m'aider à m’améliorer |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 299 messages Popularité : +16 (16 votes) |
|
Posté le 25 février 2019 - 16:04 |
Si vous pouviez envoyer plutôt le texte SQL de la requete. Bouton droit de souris puis Texte SQL. |
| |
| |
| | | |
|
| | |
| |
Posté le 26 février 2019 - 08:21 |
SELECT Utilisateur.IDUtilisateur AS IDUtilisateur, Utilisateur.Nom AS Nom, Utilisateur.Prénom AS Prénom FROM Utilisateur ORDER by Nom Asc, Prénom Asc
Cela vous convient ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 299 messages Popularité : +16 (16 votes) |
|
Posté le 26 février 2019 - 11:57 |
Vous pouvez aussi détecter le doublon éventuel en effectuant un comptage. Si le comptage est égal à 0 il n'y a pas doublon
LC_SQL est une chaîne LC_SQL = " SELECT count(*) as NB FROM Utilisateur " LC_SQL += "where Nom = '" + Nom + "' " LC_SQL += " and Prenom = '" + Prenom + "' "
MaRequête est une Source dede Données SI PAS HExécuteRequêteSQL(MaRequête, LC_SQL) ALORS Erreur("Erreur d'initialisation de la requête" + RC + HErreurInfo()) RETOUR FIN HLitPremier(MaRequête) SI MaRequête.NB = 0 pas de doublon
Vous pouvez bien sûr placer le code SQL dans une requete WD et passer Nom et Prenom en paramètre. Vous éviterez ainsi de devoir gérer les apostrophes dans les noms. L'avantage est que vous limitez ici au maximum le volume de données échangées : juste un nombre.Message modifié, 26 février 2019 - 11:58 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 299 messages Popularité : +20 (72 votes) |
|
Posté le 23 mars 2019 - 11:56 |
Donc le souhait est de s'assuré qu'il n'y a jamais deux fois la même combinaison NOM PRENOM SERVICE
afin de protégé ta base de données indépendamment de ton programme, mais aussi pour facilité et optimisé la recherche,
1° créer une clé composée sur les 3 éléments,
2° indexé cette clé en index unique
ensuite, tu as deux possibilité,
a. faire une Req et voir si tu as au moins une fiche, si oui tu as déja une occurence et donc tu ne crée pas
b. faire une interception d'erreur sur le hajoute, et si une erreur est détectée c'est que tu a essayer d'ajouter un doublon
-- Bertin CARRIERE - SPRL RGPD.Zen-Project.be bertin.carriere@gmail.com http://www.zen-project.be http://www.linkedin.com/in/bertincarriere Belgique +32(0)2/318.02.67 France +33(0)3/66.722.542 Espagne +34.5/12.702.266
http://www.be-dev.be |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 299 messages Popularité : +16 (16 votes) |
|
Posté le 23 mars 2019 - 23:00 |
a. faire une Req et voir si tu as au moins une fiche, si oui tu as déja une occurence et donc tu ne crée pas C'est différent de ce que j'avais écrit ?
b. faire une interception d'erreur sur le hajoute, et si une erreur est détectée c'est que tu a essayer d'ajouter un doublon Pour ma part je n'aime pas ce genre de solution. Ce la génère un flux de donnée inutile. Cela équivaut à foncer dans le mur et, si on ne s'est pas tapé la tête on considère qu'il n'y a pas de mur. Et pourquoi créer une clé pour chaque contrôle ? |
| |
| |
| | | |
|
| | |