Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/01/2008, 11h07   #1
Futur Membre du Club
 
Inscription : décembre 2003
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 35
Points : 15
Points : 15
Par défaut XMLRAD Trivial : clause SQL Where

Bonjour

je voudrais pouvoir générer ces 2 requêtes
SELECT Datas.IdInfo, Datas.Rdt, Datas.DateUpdate FROM bdDatas bdDatas
where Datas.Machine is null order by Datas.DateUpdate desc, Datas.Machine
SELECT Datas.IdInfo, Datas.Rdt, Datas.DateUpdate FROM bdDatas bdDatas
where Datas.Machine = '5' order by Datas.DateUpdate desc, Datas.Machine

à partir d'un classique dbExtract
je viens de faire pas mal de tests mais je n'y arrive pas
même en plaçant ce qu'il faut dans le context et en utilisant la propriété suivante pour le dbExtract

SELECT Datas.IdInfo, Datas.Rdt, Datas.DateUpdate FROM bdDatas bdDatas
where :wCondition order by Datas.DateUpdate desc, Datas.Machine
Evidemment dans le context, je place la variable "wCondition" avec ce qu'il faut ... mais cela ne fonctionne pas


Merci pour votre coup de pouce
PCBleu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 11h56   #2
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
il vaut mieux utiliser les template properties.
Code :
1
2
3
4
 
SELECT ....
{$WhereClause}
ORDER BY
et dans BeforeXMLGRAM, tu fais
maClauseWhere := 'WHERE Datas.Machine = 5';
Context.SetValue('WhereClause', maClauseWhere);

Sinon pour info ton cas :wCondition devrait être Datas.Machine = :wCondition et dans le context tu fais Context.SetValue('wCondition', '5');
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 12h36   #3
Futur Membre du Club
 
Inscription : décembre 2003
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 35
Points : 15
Points : 15
Merci pour le coup de pouce

Où peut t'on trouver ce genre d'information, et existe t'il par exemple un moyen de changer la clause Order
PCBleu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 14h56   #4
Membre éclairé
 
Inscription : janvier 2003
Messages : 284
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 284
Points : 311
Points : 311
Envoyer un message via MSN à Nicolas.Cogi
Tu peux utiliser les Templates Properties, comme l'indique Francois, n'importe où dans ta query. Ca te permet de modifier par concatenation de chaine de caractere ta requete facilement.

Code :
1
2
3
4
5
 
SELECT Datas.IdInfo, Datas.Rdt, Datas.DateUpdate
FROM bdDatas bdDatas
{$WHERE_CLAUSE}
{$ORDERBY_CLAUSE}
Tous les mots-clefs contenus entre {$ et } seront remplacés par la valeur de ce nom dans le Context.

Ici avec un bout de code Delphi :
Code :
1
2
3
4
5
6
7
 
Context.Values['Machine'] := '5';
Context.Values['WHERE_CLAUSE'] := 'WHERE Datas.Machine = :Machine';
if Context.Values['Order'] = 'desc' then
  Context.Values['ORDERBY_CLAUSE'] := 'ORDER BY Datas.DateUpdate desc, Datas.Machine'
else
    Context.Values['ORDERBY_CLAUSE'] := 'ORDER BY Datas.DateUpdate, Datas.Machine';
On met WHERE_CLAUSE et ORDERBY_CLAUSE (ca aurait pu bien sur etre n'importe quel autre nom) dans le Context avec le bout de SQL qu'on veut en lieu et place du {$...}. A l'execution, l'application remplace le code, prepare la requete et l'execute.

Tu remarqueras le passage de paramètre, meme dans la template property, pour eviter de concatener quelque chose venant du poste client dans la requete, afin d'eviter les SQL Injections (la requete etant repreparée à cause des TP, pas vraiment d'optimisation avec le parametre ici).

On recommande que la requete SQL s'execute meme si les TP sont à blanc, histoire d'eviter un quelconque probleme. Il faut en revanche toujours s'assurer du contenu de la TP, toujours pour eviter d'executer un code SQL venant du poste client, par exemple (ie. SQL injection, voir Google).

Tu trouveras pleins d'informations sur xmlrad.com > Training Manual.

Bon courage !
__________________
Nicolas
Nicolas.Cogi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h55.


 
 
 
 
Partenaires

Hébergement Web