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 :

Next & Previous


Sujet :

XMLRAD

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    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

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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à !

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    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 ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut
    Ca me semble correct si tu dis que BOAT_NAME est un INTEGER, car tu effectues le WHERE avec ce champ là...

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    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 !

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    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 !

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut
    Dans ce cas, je pense que ta solution est la bonne

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    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

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    Par défaut T'es trop Man !
    Thanks

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    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 §

  12. #12
    Membre émérite

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

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

  13. #13
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 124
    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.

  14. #14
    Membre confirmé
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Par défaut
    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

Discussions similaires

  1. Next() et previous()
    Par stefan73 dans le forum JDBC
    Réponses: 2
    Dernier message: 15/08/2011, 23h24
  2. Traduction des links NEXt, PREVIOUS dans will_paginate
    Par Javix dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 30/11/2009, 12h25
  3. [Prototype] Lightbox 2, afficher constamment le bouton next et previous
    Par morgan47 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 18/08/2009, 12h12
  4. [Struts-Layout] Utilisation des boutons next et previous
    Par elsodiop dans le forum Struts 1
    Réponses: 3
    Dernier message: 13/02/2007, 11h56
  5. Operation Mysql previous et next
    Par amaurylerouxdelens dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 19/10/2006, 11h36

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