PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 23 → Requete SQL et Source de données
Requete SQL et Source de données
Started by François C., Jul., 12 2018 4:45 PM - 4 replies
Registered member
685 messages
Popularité : +3 (3 votes)
Posted on July, 12 2018 - 4:45 PM
Bonjour,

Comment afficher la requete SQL envoyée au serveur HFSQL dans le cas suivant :

sRequeteSQL est une chaine = "SELECT * FROM MaTable WHERE Param1 = {Param1} and Param2 = {Parm2}"
sdRequete est une source de données
sdRequete.Param1 = 1
sdRequete.Param2 = 2
//etc ...

SI PAS HExécuteRequêteSQL(sdRequete,hModifieFichier,sRequeteSQL) ALORS
// afficher la requete envoyée ICI pouvoir afficher la requete qui a posé probleme
FIN
Message modified, July, 12 2018 - 4:45 PM
Registered member
224 messages
Posted on July, 12 2018 - 10:26 PM
sdRequete est une source de données,description=MaTable
sRequeteSQL est une chaine = chaineconstruit("SELECT * FROM MaTable WHERE Param1=%1 and Param2=%2",1,2)


//etc ...

SI PAS HExécuteRequêteSQL(sdRequete,hRequêteDéfaut,sRequeteSQL) ALORS
info(sRequeteSQL)
FIN

--
Baptiste CLOART
Freelance
b.cloart@blv-tech.com
06.88.74.80.65
www.linkedin.com/in/cloart
www.blv-tech.com
Message modified, July, 12 2018 - 10:27 PM
Registered member
685 messages
Popularité : +3 (3 votes)
Posted on July, 13 2018 - 10:35 AM
Bonjour,

ChaineConstruit n'est pas recommandée pour diverses raisons dont la protection contre l'injection SQL.
C'est pour cette raison que j'utilise une source de données paramétrée.

Du coup j'ai utilisé en attendant de trouver mieux le databinding avec le mapping sur les membres de classe.. mais ça ne permet plus de personnaliser la requête :(
Posted on July, 13 2018 - 11:12 AM
Bonjour

"Comment afficher la requete SQL envoyée au serveur HFSQL dans le cas suivant :"
en cas d'erreur je suppose ...
=> faire info(herreurinfo()) pour afficher l'erreur sur le poste utilisateur
autre solution conserver le texte sql et l'erreur dans un fichier HyperFile avec aussi la date et l'heure par exemple

ici il y a un probléme dans la requete sur {Parm2} à la place de {Param2} => il manque un 'a'

en Windev 23 voir la nouvelle variable "Requête SQL" , utilisation plus simple des paramétres de requêtes

bon devs
Registered member
685 messages
Popularité : +3 (3 votes)
Posted on July, 13 2018 - 2:48 PM
Bonjour,

Effectivement je n'avais pas remarqué la faute de frappe. Mais bon le souci n'est pas la.
En fait, quand on utilise une source de donnée paramétrée, elle ne modifie la chaine contenant la requête pour autant. ErreurInfo dit qu'il y a bien une erreur mais n'affiche pas la requete envoyée avec tous ses parametres renseignés.
Si je fais :

Erreur(sRequeteSQL) , ca m'affiche la requete sans les parametres renseignés.

Concernant la nouvelle variable Requete SQL, elle est TRESSS pratique et je m'en sert tous les jours ! Seulement, sa requête n'est définissable QUE lors de l'on déclare la variable. On ne peut pas définir la requête par la suite (ce qui est mon cas, D’où l'utilisation d'une chaine)
Message modified, July, 13 2018 - 2:51 PM