IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XMLRAD Discussion :

Typage de champs en dynamique


Sujet :

XMLRAD

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    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.

  2. #2
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DBField := TDBField.Create;
    DBField.FieldType := 'DATE';
    DBExtract.Fields.AddObject(FieldName, Field);

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    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 ...)

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    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

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    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 ...??

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    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.

  7. #7
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    DBExtract := TDBExtract(XMLInstruction.GetObjectReference)

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    DBExtract := TDBExtract(XMLInstruction.GetObjectReference)
    waouhh excellent ! je serai toujours surpris ;-)

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    waouhh excellent ! je serai toujours surpris Wink
    et en plus, ça marche !!!!!

    Enorme merci !!!!!

  10. #10
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    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??

  11. #11
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    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

    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 !

  12. #12
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    Merci pour tes infos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH 8] Texte html dans champ texte dynamique
    Par bractar dans le forum Flash
    Réponses: 9
    Dernier message: 21/01/2007, 10h08
  2. ADOTable : ajouter un champ en dynamique aux champs existant
    Par Sunchaser dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/03/2006, 17h06
  3. Réponses: 5
    Dernier message: 06/03/2006, 17h38
  4. Champs texte dynamique
    Par dafalri dans le forum Général JavaScript
    Réponses: 40
    Dernier message: 28/11/2005, 16h48
  5. écrire dans un champs généré dynamiquement
    Par scoder dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2004, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo