PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 23 → Requete SQL et Source de données
Requete SQL et Source de données
Iniciado por François C., jul., 12 2018 4:45 PM - 4 respostas
Membro registado
766 mensagems
Popularité : +3 (3 votes)
Publicado em julho, 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
Mensagem modificada, julho, 12 2018 - 4:45 PM
Membro registado
230 mensagems
Publicado em julho, 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
Mensagem modificada, julho, 12 2018 - 10:27 PM
Membro registado
766 mensagems
Popularité : +3 (3 votes)
Publicado em julho, 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 :(
Publicado em julho, 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
Membro registado
766 mensagems
Popularité : +3 (3 votes)
Publicado em julho, 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)
Mensagem modificada, julho, 13 2018 - 2:51 PM