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 03/03/2003, 14h34   #1
jnl
Invité de passage
 
Inscription : mars 2003
Messages : 1
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 1
Points : 0
Points : 0
Par défaut Utilisation des XMLC_Pivot et récupération en JScript

Bonjour,
en tant que nouveau venu sur ce forum je tiens en premier lieu à dire tout le bien que je pense du concept d'XMLRAD et de l'implémentation dans le framework XMLCLX. En espérant que je continue à avoir ces sentiments au fil de l'utilisation d'XMLRAD (la mariée est toujours belle au départ...).

après cette apologie d'XMLRAD, voici mes questions:

j'utilise les XMLC_Pivot pour pouvoir effectuer plusieurs mise à jour siumultanées dans la même table en utilisant la même DBbatch instruction.

En revanche j'aimerais customiser la valeur de certains champs du update depuis un Jscript BeforeInternalInstruction dans le DBbatch.
Comment peut on récupérer, dans le context, la valeur des paramètre du pivot ?


XMLC_Pivo=TMAITRE

ds le Form:
input TMAITRE[position()].IDmaitre
input TMAITRE[position()].chp1

ds la requêtes:
update Tmaitre
set tmaitre.chp1=:chp1
where idmaitre=:idmaitre


dans le j script on recupère la valeur ds le context par
GetValue("TMAITRE[1].chp1") et non par GetValue("chp1")
alotrs que la reqête est bien valorisée par le champ "chp1".
Comment peut on récupérer la valeur sans mettre le nom du pivot et surtout l'indice ?
ou bien coimment connaitre le nombre max d'indice et l'indice courant (gérer par le Match Instruction à chaque itération) ?
jnl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2003, 14h49   #2
Membre régulier
 
Inscription : janvier 2003
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 85
Points : 92
Points : 92
Lorsque tu post un formulaire utilisant le XMLC_Pivot, ton application construit ce qui s'appelle un InputDoc. Ce dernier est un document XML qui contient les différents champs et valeurs de ton formulaire utilisant le XMLC_Pivot.

Visiblement, dans ton formulaire tu as :

Code :
1
2
3
4
5
6
7
XMLC_Pivot=TMAITRE
TMAITRE[1].IDmaitre = 10
TMAITRE[1].chp1 = Toto
TMAITRE[2].IDmaitre = 11
TMAITRE[2].chp1 = Tata
TMAITRE[3].IDmaitre = 12
TMAITRE[3].chp1 = Titi
Ton application, lorsqu'il recoit ton formulaire, répère que tu utilises le XMLC_Pivot, avec pour valeur "TMAITRE". Il parse donc tous les champs du contexte pour crééer l'InputDoc correspondant aux valeurs de ton formulaire. Voilà ce à quoi il va ressembler :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<document>
<TMAITRE>
  <IDmaitre>10</IDmaitre>
  <chp1>Toto</chp1>
</TMAITRE><TMAITRE>
  <IDmaitre>11</IDmaitre>
  <chp1>Tata</chp1>
</TMAITRE><TMAITRE>
  <IDmaitre>12</IDmaitre>
  <chp1>Titi</chp1>
</TMAITRE>
</document>
Ensuite, ton application éxécute ton XMLGram. Visiblement, il contient une instruction Match, avec un DBBatch à l'intérieur. L'instruction Match permet d'aller itérer sur les différents éléments TMAITRE de ton InputDoc. Pour chacun de ces éléments, le DBBatch va être éxécuté. Les valeurs des paramètres de ta requête sont écris sans les préfixes "TMAITRE[indice]", donc "chp1" et "idmaitre". En fait, l'instruction DBBatch détecte si l'InputDoc existe ou non. S'il existe, il va piocher les valeurs dans ce dernier et non pas dans le contexte ; c'est pour cela qu'on peut utiliser dans la requête les champs "chp1" et "idmaitre". Si tu veux modifier les valeurs de ces champs, tu n'as qu'à les modifié dans l'InputDoc. Dans ton BeforeInternalInstruction, tu vas modifié les valeurs de l'élément Input (qui correspond à l'élément courant de l'InputDoc) fais :

Code :
1
2
3
chp1 := Input.GetValue('chp1');
chp1 := chp1 + '_hopla';
Input.SetValue('chp1', chp1);
Voilà
__________________
Julien C.
Julien C. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2003, 15h40   #3
Nouveau Membre du Club
 
Inscription : juillet 2002
Messages : 75
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juillet 2002
Messages : 75
Points : 35
Points : 35
Je rebondit sur ce sujet pour vous demandez un peut plus d'explications sur les "XMLC_Pivot" et les "Match".
En effet, je cherche à ajouter à une forme standard de recherche la possibilité d'effectuer une mise à jour sur les enregistrements donnés en résultat (de la recherche).
Chaque ligne de résultat est traité dans mon XSL par
<template match="Individus"> et j'ai bien entendu ajouté un bouton SUBMIT avec comme action l'URL vers mon BModule (dans lequel je cherche à faire un Match qui ne fonctionne pas).

Merci pour vos réponses.

Lux
Lux interior est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2003, 10h53   #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
Vite fait,

Une des petites limitations qu'on a avec les Framework avancés utilisant HTTP, c'est l'impossibilité de passer dans un formulaire <form> 2 champs portant le meme nom. Comment faire alors pour, par exemple, mettre à jour 2 enregistrements en une seule requete http ?
La reponse apportée par XMLRAD est le InputDoc, qui est un document XML construit automatiquement par le Framework et utilisé par certaines instructions.

Pour construire cet InputDoc, il faut passer le champ XMLC_Pivot
<input type="hidden" name="XMLC_Pivot" value="ORG" /> et un ensemble de champs composant le ou les enregs :

<input type="hidden" name="ORG[1].ORG_ID" value="1001"/>
<input type="text" name="ORG[1].ORG_NAME" value="Bob S.A."/>

<input type="hidden" name="ORG[2].ORG_ID" value="1002"/>
<input type="text" name="ORG[2].ORG_NAME" value="Robert & Co"/>

Tout juste apres l'événement BeforeXMLService, le XMLService va checker le Context pour trouver le XMLC_Pivot. S'il le trouve, il construit le InputDoc comme indiquer par Julien plus haut.

Le Match va lui permettre de matcher sur chaque item de l'InputDoc.
Pour chaque noeud dans l'InputDoc, le Match va effectuer les XMLInstructions filles en remplissant à chaque fois le Context avec les différentes valeurs.

Pour un exemple : DataGrid et Update
Bonne chance, Jim
__________________
Nicolas
Nicolas.Cogi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2003, 11h43   #5
Nouveau Membre du Club
 
Inscription : juillet 2002
Messages : 75
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juillet 2002
Messages : 75
Points : 35
Points : 35
Merci.
Je me suis servit de la "DataGrid" comme exemple et y'a tout ce que je veux ........
Lux interior est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h08.


 
 
 
 
Partenaires

Hébergement Web