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 28/04/2003, 22h10   #1
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Par défaut Next & Previous

Slt,

Je suis nv sur le forum. Je débute en XMLRAD afin de compter des bananes ( et en plus c'est pas des conneries)!
1 / J'ai commencé mon premier projet par un onglet avec ma liste de client ; je clique sur un client et hop le second onglet
2 / Celui-ci présente toute la production (de bananes ), bateau par bateau ; je clique sur un bateau et hop mon troisième onglet
3 / Celui-ci présente le détail d'un bateau container par container.

Là qd je suis sur le détail du bateau X, j'aimerais avec un bouton qui fasse un lien sur le bateau suivant X+1 et un autre sur le bateau X-1, sans à avoir à repasser par l'onglet n°2.
Comme je suis sur l'onglet n°3, j'ai bien la valeur de X (générateur d'entiers sur 9 positions), mais celle de X-1 et X+1 sont dans le Dbextract de l'onglet N°2 et les valeurs du générateurs ne se suivent pas donc je ne peux pas faire : ListCTNR?NUMBATEAU={X+1}

Existe-t'il un moyen de récupérer les valeurs d'un DbExtract d'un onglet précédent et de faire un next ou un previous ?

Merci
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2003, 10h43   #2
Membre régulier
 
Inscription : janvier 2003
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 85
Points : 92
Points : 92
Salut,

J'ai une solution... Je ne sais pas trop si elle est optimisée mais bon Il te faut rajouter deux DBExtract dans le XMLGram de ta fiche n°3 (appellons cette fiche "FormBOAT").. Le premier (appelons le "BOAT_PREVIOUS") ira chercher l'ID de l'enregistrement juste avant celui sur lequel tu es, le second (appelons le "BOAT_NEXT") ira chercher l'ID de l'enregistrement juste après celui sur lequel tu es. Après, dans ton XSL, il te faudra rajouter les liens "Bateau Précédent" et "Bateau Suivant" comme ca par exemple :

Code :
1
2
<a href="FormBOAT?BOAT_ID={/document/BOAT_PREVIOUS/BOAT_ID}">Bateau Précédent</a>
<a href="FormBOAT?BOAT_ID={/document/BOAT_NEXT/BOAT_ID}">Bateau Suivant</a>
Voilà !
__________________
Julien C.
Julien C. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2003, 16h13   #3
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Par défaut Rassures-moi !

Merci pour ces réponses, pour celle du previous et du next c'est un peu la sol à laquelle j'avais pensé mais étant novice, je ne savais pas trop si c'était le genre de voie à suivre.
Mais rassures-moi pour les query des Dbextract, est-ce à cela que tu penses :

Ma table "bateau" comporte deux champs : Boat_ID mon générateur sur 9 positions ; Boat_Name le mon du bateau, un entier sur 7 positions du style AnneeSemaineInc, ainsi le bateau de cette semaine est le 2003151.

Qry du previous :

Select Min(Boat_ID) , Min(Boat_Name)
From Bateau
where Bateau.Boat_Name > :NUMBOAT

Qry du next :

Select Max(Boat_ID) , Max(Boat_Name)
From Bateau
where Bateau.Boat_Name < :NUMBOAT

hein ?
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2003, 16h44   #4
Membre régulier
 
Inscription : janvier 2003
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 85
Points : 92
Points : 92
Ca me semble correct si tu dis que BOAT_NAME est un INTEGER, car tu effectues le WHERE avec ce champ là...
__________________
Julien C.
Julien C. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2003, 17h30   #5
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Par défaut et si le nom est un VarChar

Et si mon champ est un Varchar, existe t'il une solution car si je teste sur l'ID, le précédent ou le suivant ne sont peut être pas ceux que je veux. C'est le cas des containers dont le numéro est de la Forme CGMU 488512/6 que je classe par ordre alpha ; si je veux le suivant je ne peux tester leur ID car l'ID dépend de l'ordre d'enregistrement comme c'est un générateur et les containers sont enregistrés au fur et à mesure qu'ils arrivent.

Merci !
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2003, 17h41   #6
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Par défaut ça marche aussi

ça l'air de marcher aussi, j'ai testé mais je suis preuneur d'une meilleur sol si tu as !
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2003, 17h48   #7
Membre régulier
 
Inscription : janvier 2003
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 85
Points : 92
Points : 92
Dans ce cas, je pense que ta solution est la bonne
__________________
Julien C.
Julien C. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2003, 22h52   #8
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Par défaut Et non c'est pas la solution

En fait dans l'absolu, je peux avoir un bateau avec un Nom supérieur à un autre alors que pour leur ID ça soit l'inverse. En effet, le bateau 1 de la semaine 15 de l'année 2003 nommé 2003151 peut être créée après le bateau 2003152, aussi le qry suivant :

Select Max(Boat_ID) , Max(Boat_Name)
From Bateau
where Bateau.Boat_Name < 2003161

nous donne l'ID du 2003151 et le Boat_Name = 2003152 ! CQFD ...

Aussi il faut faire un premier qry ds un dbextract pour récupérer le boat_name et un second pour avoir l'ID du boat_name

MAIS allons plus loin !

J'ai fais des dbextract count avant le next et le prev afin de voir si il y a aviait des enreg, s'il en existe pas ds mon XSL je l'affiche pas de lien avec une close xsl:if ; ça marche c'est joli !

Mais comment cela se passe dans le Xlmgram ? en effet pour le next j'ai 3 Dbextract (count, min, boat_id) or si le count = 0 ça ne sert à rien de faire le reste, c'est ce que l'on fait dans le Xsl, mais les dbextract sont quand exécutés (enfin je suppose) ; comment l'éviter ? Existe t'il un moyen de faire le test ds le xmlgram ?
En extrapolant, si on a 4 buttons (first, prev, next, last), on aura 12 dbextract qui s'exécuteront alors que 8 suffisent si on est positionné sur le premier enreg.

Je suis sûr que tu as une sol !

Merci
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2003, 09h00   #9
Membre régulier
 
Inscription : janvier 2003
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 85
Points : 92
Points : 92
Il te faudra taper un tout petit peu de code pour cela... Tu dis que tu as 3 DBExtracts... Nommons les par exemple : GetCount, GetMin, puis GetBoatId. Tu veux que GetMin et GetBoatId soit éxécutés que si GetCount ne renvoie pas 0...

Pour cela, tu vas taper ces lignes de code au niveau de l'évènement BeforeXMLInstruction, et tu vas mettre :

Code :
1
2
3
4
5
if (XMLInstruction.Name = 'GetMin') or (XMLInstruction.Name = 'GetBoatId') then
begin
  if Context.GetValue('BOAT_COUNT') = '0' then
    Skip := True;
end;
BOAT_COUNT est le nom du champ de ton DBExtract GetCount qui contient le nombre d'enregistrements trouvés. (SELECT COUNT(BOAT_ID) AS BOAT_COUNT FROM BOAT WHERE...)..

Voilà ! J'espère t'avoir aidé.
__________________
Julien C.
Julien C. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2003, 13h22   #10
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Par défaut T'es trop Man !

Thanks
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2003, 21h43   #11
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Par défaut Eh ça veut pâ marcher ! ...

C'est koi ta synthaxe, du Jsript ou du VBscript ? J'ai essayé et à la compiler on me demande des "(" ou des ";"
Il y a pas un moyen de faire ça avec Delphi ? Si oui, comment ?

Merci §
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2003, 23h36   #12
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
C'est du Delphi, cf opérateur d'affectation :=

Pour ouvrir le projet dans delphi, tu disposes d'un icône dédié dans l'environnement XMLRAD. Ensuite dans un datamodule XMLRAD, tu as des composants qui correspondent aux XMLServices.

Mais tu peux faire la même chose en JScript ou VBScript en restant dans l'environnement XMLRAD ce qui t'éviterai de recompiler la dll (cas de delphi, il faut recompiler).

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 01/05/2003, 03h16   #13
Membre à l'essai
 
Inscription : avril 2003
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 123
Points : 24
Points : 24
Par défaut Je crois ke j'ai pb d'install ! help !

Je me disais bien ke ce genre de code me disais kelke chose ! et j'avais pas vu l'icone ds le projet Xlmrad !

J'ai bien cliquer sur l'icone mais rien ne se passe. Alors j'ai ouvrais le projet Delphi (*.dpr) à partir du répertoire racine du projet. C'est bien une librairie avec des units mais les unités sont vides, il n'y a pas de composants dedans.
Faut-il que je les ajoute à la mains où ils devraient être là déjà ?
Je crois que lors d'une installation précédente de XmlRad sur une version 4 de Delphi j'avais un onglet "Xmlrad" dans la palette de composants. Cette fois-ci, il n'y a rien sauf peut être un onglet "XML" qui vient du paquet XMLCLX de e-delos.
Me manque t'il kelke chose ? où le trouver ?

Dernière kestion à la con : le Jscript c'est du code JavaScript ?

Merci

Voici le code de mon unité compta :

unit COMPTA_unit;
interface
uses
Windows, SysUtils, Classes, Forms,
DAC, StdXMLC, StdXML_TLB, XMLApp, XMLModule, XMLComponent;
type
TCOMPTA = class(TXMLModule)
private
protected
public
end;
var
COMPTA: TCOMPTA;
implementation
{$R *.DFM}
uses
{$ifdef VER130}
WebBroker,
{$endif}
{$ifdef VER140}
WebBroker,
{$endif}
XMLUtils, XMLCursor;
initialization
XMLApplication.AddModuleClass(TCOMPTA);
end.
bidson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2003, 09h35   #14
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
Si tu utilises la version 7RC2 ou 7RC3 de XMLRAD, tu dois avoir 5 composants dans la palette XML sous delphi. Il faut poser manuellement les composants sous delphi. Il n'y a pas d'interaction dans la mesure ou cela necessiterait une recompilation pour les prendre en compte. Hors, la dll livrée permet de travailler hors delphi, avec du scripting.
Enfin, oui JScript est du javascript
Pierre FORAZ 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 15h08.


 
 
 
 
Partenaires

Hébergement Web