PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Demande de conseil sur code simple
Demande de conseil sur code simple
Iniciado por ludo.683, 18,jun. 2019 12:42 - 5 respuestas
Publicado el 18,junio 2019 - 12:42
Bonjour le développeur (Développeuse)

je me rapproche encore vers vous pour vous demander conseil. encore :)
j’étudie Windev (débutant)

et j'ai fait un un code qui me permet de vérifier certaine information spécifique d'une bdd HFSQL

base : Membre
Table : Membre.nom, Membre.prénom

Ma question : Existe t-il d'autre façon de faire ce que j'ai fait ?
je pense que je peut faire pareil avec des fichiers requête sur la bdd , mais quelle est l’intérêt ?
Je pourrai peut être aussi utiliser la Fonction SELON , mais quel intérêt ?

Voici mon code : (ce code fonctionne très bien )
PS: j'ai ajouter seulement des Boites infos pour simplifier le code.
----------------------------------------------------------------------------------------------------------------------------------------
//code du BTN_Enregistrer

//on verifie si le nom est déjà dans la base.
HLitRecherche(Membre,Membre.Nom,SAI_Nom,hIdentique)

// si on trouve le même nom
SI HTrouve(Membre) ALORS
// on fait une boucle sur la bdd Membre
TANTQUE HTrouve(Membre)

//si le même prénom est trouvé, on affiche un message
SI Membre.Prénom = SAI_Prénom ALORS
Info("Un membre est déjà enregistrer sous ce nom et prénom,Veuillez vérifier vos informations !")
SORTIR
FIN

// si le nom et prénom à été trouver on ferme la boucle.
// sinon on passe au membre suivant avec le même nom
HLitSuivant(Membre)


// si le prénom n'a pas été trouver on affiche le message
// on peut ajouter le membre avec le même nom et pas le même prénom
SI Membre.Prénom <> SAI_Prénom ALORS
Info("on ajoute même nom et pas même prénom !")
// on sort de la boucle
SORTIR

FIN
//on ferme la boucle
FIN


SINON
//si le Nom n'est pas dans la base alors on ajoute nom et prénom.
Info("on ajoute pas même nom et pas même prénom !")
FIN
----------------------------------------------------------------------------------------------------------------------------------------

Je vous remercie d'avance pour vos conseils et votre temps.

Ludovic
Publicado el 18,junio 2019 - 14:14
Bonjour,
Vous pourriez créer une clé composée du nom et du prénom et du coup en une lecture vous verriez si nom et prénom existent.

Slts
D.Masse
Miembro registrado
1.640 mensajes
Publicado el 18,junio 2019 - 14:39
Hello,

Une requete pourrais t’éviter de faire une boucle :

ReqNomPrenom est une requête SQL =
[
SELECT * FROM Membre
WHERE Membre.Nom = {pNom} AND Membre.Prenom = {pPrenom}
]
ReqNomPrenom.pNom = SAI_Nom
ReqNomPrenom.pPrenom = SAI_Prenom

HExécuteRequêteSQL(ReqNomPrenom,hRequêteDéfaut)
HLitPremier(ReqNomPrenom)

SI HNbEnr(ReqNomPrenom) = 0 ALORS
// On peut ajouter, pas de doublon
SINON
// Sinon, affiche message avertissement
FIN


Sinon dans ton code tu peux aussi simplifer :

HLitRecherche(Membre,Membre.Nom,SAI_Nom,hIdentique)
// peux aussi s'ecrire
HLitRecherchePremier(Membre,Membre.Nom,SAI_Nom)


SI HTrouve(Membre) ALORS
TANTQUE HTrouve(Membre)
FIN
FIN

// "SI HTrouve(Membre)" est alors inutile a cause de "TANTQUE HTROUVE()"
//
Mensaje modificado, 18,junio 2019 - 14:41
Publicado el 18,junio 2019 - 17:40
Merci pour vos réponses et votre temps.

effectivement Daniel Masse et François C.

vous m'avez permis de comprendre plusieurs chose dans le code et dans windev.

je suis la formation sur le site de Windev et je n'en suis pas encore au code sql direct, je ne savais même pas que Windev pouvais faire cela .
personnellement je passe par le système de requête automatisé de Windev tout en inscrivant directement mon code sql, mais j'avoue que pourvoir taper directement le code sql dans le code de la fenêtre fait gagner du temps.

j'ai encore beaucoup à apprendre :)

au passage je vais aussi étudier les clés composée

je tien vraiment a vous remercie pour vos commentaires, conseil et votre temps !

ludovic
Publicado el 18,junio 2019 - 17:54
une autre petite question en passant :)


quand on n'a une fenêtre avec plusieurs texte de saisie et case a cocher avec plusieurs calcul a faire avant d'enregistrer dans la bdd.

vaut mieux t-il tout faire dans un seul bouton et ajouter en même temps les données a la base ou plutôt tout faire dans une autre fenêtre ?

exemple :

on n'a plusieurs SAi (genre civilité) et plusieurs case a cocher qui nous permettent de faire des calculs, on crée des variables pour les calculs et ensuite on enregistre tout dans la base avec un hajoute ou un hmodifie .
y a t-il une limite de taille de code dans un bouton ?

ou vaut mieux t-il effectuer tout les calculs et envoyer les résultats dans une autre page pour que les informations soit plus claire surtout pour la relecture du code ?

merci d'avance pour vos réponses.

ludovic
Miembro registrado
1.640 mensajes
Publicado el 18,junio 2019 - 18:26
Ben la c'est a toi de voir comment tu préfère coder j'ai envie de dire.

Une bonne pratique serait de séparer le code de l'IHM et donc de développer des classes qui gèrent le code metier et une autre qui gere la base de donnée.

Mais bon, c'est comme tu le sens !

PS : Non a priori pas vraiment de limite pour le code
cf : https://doc.pcsoft.fr/?3084035&name=les_limites_windev