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

Rave Discussion :

Avoir plusieurs fois le même document dans un seul aperçu


Sujet :

Rave

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Points : 39
    Points
    39
    Par défaut Avoir plusieurs fois le même document dans un seul aperçu
    Bonjour, je sillonne internet et le forum sans trouver de réponse, alors je me permet de venir quémander votre aide.

    J'ai une impression qui me va très bien (un rapport mensuel), mais j'aimerais pouvoir l'enchainer pour imprimer en une seule fois par exemple mes rapports pour toute l'année. Il faudrait donc que mon programme soit capable de générer le rapport plusieurs fois et de me faire un aperçu du tout. Est-ce que Rave ou Delphi arrive à faire ça ?

    Je sais pas si j'ai été assez clair, en tout cas si qq'un connais la solution, ça serait extra. Bonne semaine et merci d'avance.

    P.S : J'utilise Delphi 2010 et Rave Report 7.7

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 105
    Points : 41 219
    Points
    41 219
    Billets dans le blog
    63
    Par défaut
    Enchainer des rapports ? Oui c'est possible il doit même y avoir un Tip sur ce sujet chez nevrona
    Maintenant reste a savoir exactement ce que tu entends par "enchainer"

    tip Nevrona

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Génial mec !!! Ca à l'air d'être exactement ce que je cherche. J'avais pas trouvé ça.
    Je vais essayer tout de suite. Milles mercis et bonne fin de semaine !!!

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    En fait c'est presque ça, mais cette astuce marche avec des reports différents. Moi j'aimerais enchainer le même report plusieurs fois.
    C'est pas facile, mais merci, ça m'a donné une piste.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 105
    Points : 41 219
    Points
    41 219
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par jesusnavas Voir le message
    marche avec des reports différents. Moi j'aimerais enchainer le même report plusieurs fois.
    C'est la même chose le seul 'truc' c'est de changer le set de données ou le(s) paramètre(s)

    exemple :
    Code SQL de la source de données : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM FACTURES WHERE MOIS=:MOIS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     with Sender as TBaseReport do begin
        Maquery.Active:=False;
        Maquery.ParamByName('MOIS').asInteger:=1
        MaQuery.Active:=True;
        RaveProject.ExecuteReport('Report1');
        NewPage;
        Maquery.Active:=False;
        Maquery.ParamByName('MOIS').asInteger:=2
        MaQuery.Active:=True;
        RaveProject.ExecuteReport('Report1');
        NewPage;
        Maquery.Active:=False;
        Maquery.ParamByName('MOIS').asInteger:=3
        MaQuery.Active:=True;
        RaveProject.ExecuteReport('Report1');
      end; { with }
    [Edit] en me relisant après envoi je me suis aperçu que l'on pouvait même faire une boucle du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     with Sender as TBaseReport do begin
      for i:=1 to 3 do begin
        Maquery.Active:=False;
        Maquery.ParamByName('MOIS').asInteger:=i
        MaQuery.Active:=True;
        RaveProject.ExecuteReport('Report1');
        if i<3 then NewPage;  // fait un newpage sauf pour la dernière le seul truc "moche" de la boucle
     end; {for}
      end; { with }

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Ecoute je te remercie beaucoup de ton aide, mais je m'excuse, j'y arrive pas, mon aperçu reste toujours blanc.
    Je dois rater un truc quelque part, j'ai essayé de sortir le code du onPrint et sur un simple bouton je fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    MonRave.Open;
    MaQuery.SQL.Text := 'Ma requête';
    MaQuery.Open;
    MonRave.ExecuteReport('1');
    RavSystem.Execute;
    Ce simple code me donne une page blanche.
    Par contre exactement le même code avec juste le execute sur le Rave au lieu du System c'est à dire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MonRave.Open;
    MaQuery.SQL.Text := 'Ma requête';
    MaQuery.Open;
    MonRave.Execute;
    M'imprime bien mon rapport. Je pense donc que le problème viens d'une propriété à la con que je dois avoir ou autre chose, mais je trouve pas. J'ai bien la propriété Engine de MonRave qui indique le RavSystem, bref, je galère un peu.

    En tout cas merci de ta patience, je vais y passer encore pas mal de temps demain j'espère trouver.
    Bonne semaine.

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 105
    Points : 41 219
    Points
    41 219
    Billets dans le blog
    63
    Par défaut
    RvSystem est là pour utiliser l'événement OnPrint de celui-ci .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TForm1.RvSystem1Print(Sender: TObject);
    Mais il ne faut pas oublier de relier le raveproject au rvSytem via la propriété engine du rave project

    relis bien les 2 portions de code fournies , pas de rvSystem.Execute , même pas un Rave.Execute mais bien un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        RaveProject.ExecuteReport('Report1');
    ne pas confondre le 1 du paramètre de la query avec le 1 du 'report1'
    Report1 étant le nom de l'état dans Rave

    pour obtenir l'ensemble d'état :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      RvSystem1.Execute;
    end;

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 105
    Points : 41 219
    Points
    41 219
    Billets dans le blog
    63
    Par défaut [Astuce]
    une astuce dans la même veine .

    Pour des raisons pratiques je voulais éditer un même état sans passer par le nombre de copies . Dans mon cas il s'agit d'éditer un ensemble de factures et de duplicatas (un duplicata étant le même report avec des informations supplémentaires) . L'ensemble du job d'impression devant être lié pour ne pas retrouver d'autres jobs au milieu .

    J'ai donc appliqué ma propre solution (post #5) mais cela ne fonctionnait pas correctement ! je n'avais aucune copies mais juste un exemplaire de chaque facture .

    Mon astuce a été d'introduire une variable dans mon report (Foo) et de la changer pour chaque copie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    procedure TForm15.RvSystem1Print(Sender: TObject);
    var f,d : word;
    begin
    WITH Sender AS TBaseReport do begin
        While not FacturesaEditer.Eof do
          begin
              rvproject1.SetParam('Foo','0');    // initialisation variable
               for f := 1 to nbCopiesd1facture do
                 begin
                   rvproject1.SetParam('Foo',inttostr(f));   // modification variable
                   RvProject1.ExecuteReport('Facture');
                   if f<nbFact.Value then NewPage;
                 end;
     
                for d := 1 to nbDuplicata1Facture.Value do
                begin
                   Newpage;
                   rvproject1.SetParam('Foo',inttostr(d+f));  // modification variable
     
                   RvProject1.ExecuteReport('Facture');
              end;
             FacturesaEditer.Next;
            IF not FacturesaEditer.EOF then NewPage;
        end; {FOR}
      end; { WITH }
    end;

Discussions similaires

  1. Plusieurs fois le même objet dans un Canvas
    Par Invité dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 27/06/2011, 16h46
  2. Réponses: 2
    Dernier message: 12/01/2010, 12h00
  3. Plusieurs fois la même donnée dans une liste
    Par BRUNO71 dans le forum IHM
    Réponses: 3
    Dernier message: 21/01/2008, 08h22
  4. Plusieurs fois le même .class dans le jar
    Par kenny6 dans le forum Général Java
    Réponses: 7
    Dernier message: 25/04/2007, 16h42
  5. empecher d'avoir deux fois la même chose dans une listebox
    Par Seb4657 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/03/2006, 21h26

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