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 27/03/2006, 11h56   #1
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Par défaut Typage de champs en dynamique

Bonjour,

Je voudrais arriver à typer dynamiquement des champs issus d'un DBExtract contenu dans un XMLGram.

La requete de mon instruction est initialisée au moyen d'une valeur de contexte {$pMaRequete}
Le pb est que je ne connais pas les champs contenus dans la requete en conception et que je voydrais bien dire de me renvoyer une date, float (avec tranfo par le framework en fonction des cultures)
N'y a-t-il pas moyen de faire un truc du style XMLInstruction.AddField ???

Merci.
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 15h50   #2
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
Ne peux tu pas définir tous les champs potentiels qui peuvent être extraient ? ou bien c'est vraiment pas faisable ?
SInon je pense que tu peux utiliser dans la classe TDBextract le Fields en créant à la main un TDBField qui est associés au nom du champ:

Code :
1
2
3
DBField := TDBField.Create;
DBField.FieldType := 'DATE';
DBExtract.Fields.AddObject(FieldName, Field);
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2006, 09h36   #3
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Helas non. Il y a une multitude de champs date et float, et en plus, le client peut tout à fait faire un renommage de colonne (ou meme faire un sum ou count, ...)

J'ai bien vu le DBField, mais puis-je l'utiliser dasn le gestionnaire d'évènement ??? (BeforeXMLinstruction par exemple ...)
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2006, 13h06   #4
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Citation:
J'ai bien vu le DBField, mais puis-je l'utiliser dasn le gestionnaire d'évènement ??? (BeforeXMLinstruction par exemple ...)
Lorsque le user définit les champs à obtenir, ne peux-tu pas construire un à la volée un dictionnaire de champs typés.
Puis dans la foulée, pourquoi pas générer à la volée le xmlservice.xmlgram du service qui va exécuter la requête ?
Car je n'ai pas l'impression qu'on puisse accéder à DBExtract.Fields depuis le gestionnaire d'évènements.

Sylvain
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2006, 14h41   #5
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Le user définit une requete et indique le format des zones.
J'ai ces info dans le context au moment du BeforeXMLGRAM
.
Je ne vois pas comment faire ce que tu me dis ...??
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2006, 17h17   #6
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Citation:
Envoyé par rgarnier
Je ne vois pas comment faire ce que tu me dis ...??
Oui j'ai répondu un peu vite. L'idée de générer un xmlgram à la volée n'est pas envisageable dans un contexte multiutilisateurs.
Admettons qu'à la suite de la requête et des zones définies par le user, tu aies à disposition la liste des champs et leurs types.
Il faudrait pouvoir instancier un DacQuery et typer les champs de la requêtes. Malheureusement le typage des champs n'est implémenté que pour le DBExtract et pas le DacQuery.
Le fait que tu passes par le DacQuery me parait le plus propre en tout cas. Une WishList++ pour la 2006R2 ?

Autre solution, avoir accès à l'objet DBExtract lorsque tu te trouves dans le BeforeInstruction par exemple, et encore on se retrouve encore dans un contexte multi utilisateur.

Dans les deux cas, il faut modifier le framework, je ne vois pas d'autres soluce. Je préfère la première (DacQuery) que j'utilise d'ailleurs pour exécuter des requêtes construites dynamiquement, mais jusqu'à présent je n'ai pas eu besoin de typer les champs.
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2006, 18h27   #7
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
Citation:
Envoyé par rgarnier
Helas non. Il y a une multitude de champs date et float, et en plus, le client peut tout à fait faire un renommage de colonne (ou meme faire un sum ou count, ...)

J'ai bien vu le DBField, mais puis-je l'utiliser dasn le gestionnaire d'évènement ??? (BeforeXMLinstruction par exemple ...)
oui tu peux, il suffit de récupérer l'instance de l'instruction
Code :
DBExtract := TDBExtract(XMLInstruction.GetObjectReference)
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2006, 19h53   #8
Membre éprouvé
 
Inscription : mars 2002
Messages : 516
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 516
Points : 483
Points : 483
Envoyer un message via MSN à Sylvain James
Citation:
Envoyé par Sylvain James
Autre solution, avoir accès à l'objet DBExtract lorsque tu te trouves dans le BeforeInstruction par exemple, et encore on se retrouve encore dans un contexte multi utilisateur.
Citation:
Envoyé par RDM
Code :
DBExtract := TDBExtract(XMLInstruction.GetObjectReference)
waouhh excellent ! je serai toujours surpris ;-)
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

Mon Blog : http://blog.developpez.com/index.php?blog=89
Mes Articles : http://sjames.developpez.com/
Rubrique XMLRAD: http://xmlrad.developpez.com
Sylvain James est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 11h35   #9
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Citation:
waouhh excellent ! je serai toujours surpris Wink
et en plus, ça marche !!!!!

Enorme merci !!!!!
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 15h49   #10
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Allez, une petite dernière demande d'info...

Au fur et à mesure des besoins, je crée donc des DBField qui ne sont jamais supprimés (sauf iisreset) ?? N'est-ce pas ??

Un pb potentiel peut se poser dans le cas ou un même nom de champ désigne 2 types de valeurs différentes. Il faut alors supprimer le 1°objet et le recréer. Ok??
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 17h39   #11
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
Citation:
Envoyé par rgarnier
Allez, une petite dernière demande d'info...

Au fur et à mesure des besoins, je crée donc des DBField qui ne sont jamais supprimés (sauf iisreset) ?? N'est-ce pas ??
effectivement, supprimés à la libération de l'application

Citation:
Un pb potentiel peut se poser dans le cas ou un même nom de champ désigne 2 types de valeurs différentes. Il faut alors supprimer le 1°objet et le recréer. Ok??
oui c'est ca !
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2006, 16h40   #12
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Merci pour tes infos
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier 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 02h25.


 
 
 
 
Partenaires

Hébergement Web