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

FastReport Discussion :

Conception d'une facture avec FastReport


Sujet :

FastReport

  1. #1
    Membre actif
    Conception d'une facture avec FastReport
    Bonjour a tous,
    j'ai commencer a travaillé avec fastReport , j'ai réalisé des état avec ce dernier en consultant son documentation officiel .
    maintenant je suis arrivé a des choses un peut compliqué .
    c'est juste je veux réaliser une facture , j'ai mis une bande masterDetail qui contient le détail de ma facture, mais cette dernière doit avoir un nombre limité de ligne , 18 lignes par pages , après la 18 eme ligne, une nouvelle page est insérer automatiquement.
    j'ai commencer a jouer avec les événements de la bande Détail , j'ai appris comment réalisé un compteur de lignes et comment créer une nouvelle page.
    le problème est le suivant :
    si la facture contient seulement 7 lignes , je veut insérer les lignes vides (Blanches) a la fin de ces lignes (Dans mon exemple je doit insérer 11 lignes vides).

    j'ai consulter ce post qui resemble a mon probleme
    [FastReport 4][D7] Comment Completer un état ?
    y t il une suggestion SVP.

    j'utilise Delphi 7 entrepise + fastReport 5.

  2. #2
    Membre actif
    pour bien expliquer mon probleme voici une facture exemple.

  3. #3
    Rédacteur/Modérateur

    Bonjour,

    Les Totaux doivent être dans une Bande résumée et cette dernière alignée en bas

    ceci devrait fonctionner
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);
    begin
    if engine.freespace > reportsummary1.height then
       Engine.CurY := Engine.PageHeight -reportsummary1.height -pagefooter1.Height - 1;
    end;

    ou cela
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure ReportSummary1OnAfterCalcHeight(Sender: TfrxComponent);
    begin
    Engine.CurY := Engine.PageHeight -reportsummary1.height -pagefooter1.Height - 1;
    end;


    en tout cas le manque de l'alignement en bas semble être une des lacunes de FastReport !
    malheureusement/heureusement je n'ai pas encore eu à faire ce type d'état, mais je suis à peu près sur qu'il y a des exemples de factures conforme à l'attente
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  4. #4
    Membre actif
    Bonjour ,
    Merci beaucoup Sergio pour ton suivi ,
    tu sais j’attends toujours tes réponses , merci encore.
    je pense qu'il faut utiliser des sous rapport , une chose que je n'ai jamais utilisé.
    as tu un exemple claire avec les sous rapport FastReport?

  5. #5
    Membre régulier
    Citation Envoyé par aimer_Delphi Voir le message
    Bonjour a tous,

    le problème est le suivant :
    si la facture contient seulement 7 lignes , je veut insérer les lignes vides (Blanches) a la fin de ces lignes (Dans mon exemple je doit insérer 11 lignes vides).

    j'ai consulter ce post qui resemble a mon probleme
    [FastReport 4][D7] Comment Completer un état ?
    y t il une suggestion SVP.

    j'utilise Delphi 7 entrepise + fastReport 5.
    Bonjour essai avec la solution suivante:
    Tu rajoute une bande child(enfant) ,puis la bande donnée détails(ou bien données maitre ligne).Tu initialises une variable i à 0 dans le onbeforeprint de l’entête de page que tu incrémente dans le onbeforeprint des données détails puis enfin dans le onbeforeprint du pied détail
    tu met
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while i<11 do
     begin
        ShowBand(enfant1);
        i:=i+1;
     end;

  6. #6
    Membre émérite
    Citation Envoyé par aimer_Delphi Voir le message
    Bonjour ,
    Merci beaucoup Sergio pour ton suivi ,
    tu sais j’attends toujours tes réponses , merci encore.
    je pense qu'il faut utiliser des sous rapport , une chose que je n'ai jamais utilisé.
    as tu un exemple claire avec les sous rapport FastReport?
    bien vu, normalement dans le principal trace ta facture, avec "SubReport" tu affiche les données
    https://www.fast-report.com/public_d...rManual-en.pdf
    page 80;
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  7. #7
    Membre régulier
    Citation Envoyé par aimer_Delphi Voir le message
    pour bien expliquer mon probleme voici une facture exemple.
    Depuis Ps mal du temps je cherche comment convertir ce Net à payer en lettres en bas de la facture .

  8. #8
    Rédacteur/Modérateur

    Bonjour,

    Cette dernière demande est presque hors sujet !
    je cherche comment convertir ce Net à payer en lettres
    c'est le sujet de votre question ici Si vous n'arrivez pas à obtenir de résultat commencez donc par y poster votre code !

    en bas de la facture
    Vous avez l'approche proposée par edam : les subreports
    Page 1


    SubReport1


    l'autre solution (que j'avais signalée) fonctionne également
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // code fastreport
    procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);
    begin
    //   Engine.CurY := Engine.PageHeight - Reportsummary1.height - PageHeader1.Height - 0.00001; 
    end;

    ce code se trouve dans le même état que les images précédentes, il a été commenté après création/utilisation du subreport

    j'anticipe également la question : "comment avoir des lignes verticales complètes ?"
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // code fastreport
    procedure Child1OnBeforePrint(Sender: TfrxComponent);
    var h : Extended;
    begin
     h:=Engine.FreeSpace-ReportSummary1.Height-PageFooter1.Height;
     if h < 0  then h:=(Engine.FreeSpace-PageFooter1.height) + (Engine.PageHeight- PageHeader1.Height - PageFooter1.Height- ReportSummary1.Height - 0.0001 )
               else h:=(Engine.FreeSpace-PageFooter1.height-ReportSummary1.Height);
     Child1.Height:=h;
     Memo2.Height:=h;
    end;
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  9. #9
    Nouveau Candidat au Club
    Positionner une band summary en bas de page
    Bonjour,

    J'ai voulu tester votre code mais sur un report de 2 pages, au lieu de s'afficher en bas de ma 2ème page, mon "summary" s'affiche toujours en haut, avec juste un espace réservé pour l'entête. Je ne parviens pas à le mettre en bas de page, alors que si le report n'a qu'une seule page, cela fonctionne. J'ai bien mis l'option "Double pass" cochée. J'ai essayé aussi en testant si on est sur la page 2 ou si on est sur le FinalPass, mais ça ne réagit pas !
    Auriez-vous une idée svp ?

    Merci d'avance

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);
    begin
       Engine.CurY := Engine.PageHeight - Reportsummary1.height - PageHeader1.Height - 0.00001; 
    end;

###raw>template_hook.ano_emploi###