|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| Requete sql avec paramètre (débutant) |
| Iniciado por DevPhp, 25,jul. 2020 19:01 - 5 respuestas |
| |
| | | |
|
| |
Miembro registrado 2 mensajes |
|
| Publicado el 25,julio 2020 - 19:01 |
Bonjour,
J'essaye de faire un truc qui devrais etre simple, tester si un email est deja en bdd pour continuer le traitement mais le soucis c est que j ai cette erreur :

(j'ai mi aucun controle sur la saisie c 'est jute un test le texte que je rentre en imput est : ju)
EcranVersFichier()
REQ est une Source dede Données sMaReq est une chaîne = "SELECT Personnel.Email FROM Personnel WHERE Personnel.Email = %1" sMaReq = ChaîneConstruit(sMaReq, SAI_Email)
SI SAI_Pass_confirm <> SAI_Pass ALORS Info("Votre confirmation de mot de passe est différente du mot de passe") SAI_Pass = "" SAI_Pass_confirm = "" SINON SI HExécuteRequêteSQL(REQ, hRequêteDéfaut, sMaReq) >= 1 IsEmailExist est un entier IsEmailExist = HNbEnr(REQ) SI IsEmailExist = 0 ALORS HAjoute(Personnel) HFerme(FEN_Test_Db) HOuvre(FEN_Liste_des_utilisateurs) SINON Info("Cet Email est déjà dans notre base de donnée") FIN SINON Erreur(HErreurInfo()) Info("Une erreur a été détectée pendant la récupération des données.") FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 948 mensajes |
|
| Publicado el 25,julio 2020 - 19:16 |
Bonjour Si SAI_Email est de type chaine alors dans "SELECT Personnel.Email FROM Personnel WHERE Personnel.Email = %1" il manque les ' encadrant %1 "SELECT Personnel.Email FROM Personnel WHERE Personnel.Email = '%1'"
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2 mensajes |
|
| Publicado el 25,julio 2020 - 19:59 |
oui c 'étais ça merci  |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.173 mensajes |
|
| Publicado el 27,julio 2020 - 13:46 |
Bonjour,
On peut aussi simplifier comme suit:
sMaReq est une chaîne = "SELECT Personnel.Email FROM Personnel WHERE Personnel.Email = '[%SAI_Email%]' "
à la place de :
sMaReq est une chaîne = "SELECT Personnel.Email FROM Personnel WHERE Personnel.Email = '%1' " sMaReq = ChaîneConstruit(sMaReq, SAI_Email)
-- Thierry TILLIER Développeur Windev-Webdev Formation Windev : https://coursdinfo.teachable.com/ Formation bureautique : https://coursdinfo.net |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 213 mensajes |
|
| Publicado el 27,julio 2020 - 16:28 |
Bonjour,
Comme certaines de mes requêtes peuvent être utilisés à de multiples endroits dans mon code j'encapsule les paramètres.
sMaReq est une chaîne = "SELECT Personnel.Email FROM Personnel WHERE Personnel.Email = {cEmail}" Je n'ai plus qu'à donner une valeur à cCourriel avant d'exécuter la requête. cEmail = SAI_Email..valeur
Théoriquement, un Null renverra tous les courriels. cCourriel = Null
Fonctionne avec de multiples paramètres si requis.
sMaReq est une chaîne sMaReq = "SELECT Personnel.Email " sMaReq += "FROM Personnel " sMaReq += "WHERE Personnel.Email = {cEmail} " sMaReq += "AND Personnel.ChampX = {cChampX} " < sMaReq += "AND Personnel.ChampY = {cChampY} " sMaReq += "AND Personnel.ChampZ = {cChampZ} " J'ai découpé le code pour la lisibilité, une habitude.
Les indirections { } sont expliquées ici: https://doc.pcsoft.fr/fr-FR/?1512005
Bref, il y a plusieurs solutions à ta demande.

Bon dev.
Serge
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 213 mensajes |
|
| Publicado el 27,julio 2020 - 16:35 |
Foutu forum où l'on ne peut éditer ses messages...

Dans cet exemple, cEmail = Null
Serge
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|