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

Langage Delphi Discussion :

Imprimer après une sélection


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut Imprimer après une sélection
    Bonsoir,
    Je développe une application avec Delphi et Paradox (pour bases de donnée).
    Cette application permet de saisir les ordres de Mission des employés.
    Or un employé à plusieurs mission.
    L'application doit permettre à l'utilisateur de sélectionner les missions d'un employé et les imprimés.
    Exemple: un employé à 5 missions
    - 05/02/2008
    - 15/02/2008
    - 20/02/2008
    - 02/03/2008
    - 15/03/2008

    Je veux imprimer Les Missions n°1, 2, 5 (en cochant des cases) Par exemple.

    Comment devrai procéder? est ce que vous avez déjà rencontrer ce cas ?
    S.V.P Donnez moi des liens utiles, des requêtes SQL ou des codes sources pour résoudre ce problème !

    Merci ...

  2. #2
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut
    salut



    j'ai pas d'éxemple complet a te fournir mais
    regarde du coté de dbgrid.selectedrows, GotoBookmark

    j'ai fait ça avec freereport

    un compositereport et un tableau de report que je crée dynamiquement

    l'utilisateur choisit les ligne a imprimer dans une dbgrid avec multiselect


    voilà en gros

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Issam Voir le message
    salut
    j'ai pas d'éxemple complet a te fournir mais
    regarde du coté de dbgrid.selectedrows, GotoBookmark

    j'ai fait ça avec freereport

    un compositereport et un tableau de report que je crée dynamiquement

    l'utilisateur choisit les ligne a imprimer dans une dbgrid avec multiselect

    voilà en gros
    Merci pour la réponse,
    C'est une bonne idée. Je n'ai pas utiliser ce composants auparavant mais je vais l'essayer.

    A suivre ...

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut Quick Report et les bases de données
    Je veux imprimer un état qui contient :

    ------------------------------------------------------------------
    en-tête (Nom de l'entreprise)
    ------------------------------------------------------------------
    Les informations de l’employé (Table employé)
    QRDBText(Nom) QRDBText(Prénom) QRDBText(Adresse) QRDBText...

    -------------------------------------------------------------------
    Les informations de la grille qui contient les missions effectuées par l'employé
    (Table Mission)
    -------------------------------------------------------------------

    Comment faire ?
    est ce qu'il y a un moyen d'appeler la grille directement dans le quick report comme on le fait avec QRDBText ?

    Merci de me répondre c'est un travail urgent que je n'arrive pas a terminer à cause de l'impression....

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 202
    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 202
    Points : 41 443
    Points
    41 443
    Billets dans le blog
    63
    Par défaut
    slt,

    tu as déjà toutes les informations

    ------------------------------------------------------------------
    en-tête (Nom de l'entreprise)
    ------------------------------------------------------------------
    est soit une bande titre, soit entête de page soit les deux

    ------------------------------------------------------------------
    Les informations de l’employé (Table employé)
    QRDBText(Nom) QRDBText(Prénom) QRDBText(Adresse) QRDBText...

    -------------------------------------------------------------------
    A)une bande détail (si tu veux plusieurs employés) sinon pourquoi pas un B)groupHeader sur Code Employé

    -------------------------------------------------------------------
    Les informations de la grille qui contient les missions effectuées par l'employé
    (Table Mission)
    -------------------------------------------------------------------
    si A) alors une bande SubDetail
    si B) Alors Bande Détail

    selon ce que tu demandes (bien que j'ai l'impression que tu confondes grille qui est un affichage sur une FORM et Table ou Query qui est un ensemble de données dans un Fichier sur Disque ) je suggere d'opter pour la solution B)

    en effet selon ce que je déduis de tes posts l'affichage des missions est fait ce qui veut dire qu'une sélection sur ce fichier est déjà faite et que donc si le Datasource du quickreport est le fichier mission le tour est joué

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Merci SergioMaster
    Citation Envoyé par SergioMaster Voir le message
    est soit une bande titre, soit entête de page soit les deux
    Jusque là c'est bon !

    A)une bande détail (si tu veux plusieurs employés) sinon pourquoi pas un B)groupHeader sur Code Employé

    si A) alors une bande SubDetail
    si B) Alors Bande Détail

    selon ce que tu demandes (bien que j'ai l'impression que tu confondes grille qui est un affichage sur une FORM et Table ou Query qui est un ensemble de données dans un Fichier sur Disque ) je suggere d'opter pour la solution B)
    Je reformule :
    Je veux imprimer les données de la table "Mission" qui est affichée sous forme de grille (dbgrid) dans une form.
    Que devrai-je mettre comme composants dans la bande Détail pour pouvoir imprimer toutes les lignes ou quelques unes(une selection faite par l'utilisateur) de ma dbgrid ?

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 202
    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 202
    Points : 41 443
    Points
    41 443
    Billets dans le blog
    63
    Par défaut
    une solution que j'ai adopté dans des cas pareil :

    1) rajouter un champ 'EDITER' boolean ou char(1) dans la table affichée (dans ton cas Missions) modifiable par l'utilisateur

    2) tester si à imprimer ou non dans l'evenement BeforePrint de la Bande

  8. #8
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Je n'ai toujours rien sur l'état
    C'est bon pour la selection c'est une bonne idée mais Je n'ai toujours rien sur l'état.
    Sur le Quick Report j'ai rajouter une bande détail et un composant table pour que je puisse afficher ses donnée et c'est tout ! je n'ai aucun résultat !
    Que devrai-je rajouter du code du sql ?
    S.V.P Donnez moi plus de détails ! sinon des tutoriaux .
    Merci ....



    NB: j'ai suivi un guide que j'ai trouver sur le forum pour afficher tout le contenu de la table mais malheuresement sans utiliser le quick report

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 202
    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 202
    Points : 41 443
    Points
    41 443
    Billets dans le blog
    63
    Par défaut
    procédons par ordre
    1) le quickreport est inclus dans la Form ou il y a la grille ou séparé ("form" distincte) ?
    ce qui me fait demandé ceci est que tu dis avoir mis un comosant table dans quickreport

    2 )le QR est-il bien lié à la bonne table ? erreur classique

  10. #10
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    La grille (dbgrid) et le QuickReport sont dans deux forms differentes. Est ce qu'ils doivent êtres sur le même Form ?
    J'ai mis deux composants Table (table1=employés et table2=Mission) dans le QuickReport. La première table (employés) je l'utilise pour afficher les informations de l'employé en utilisant les QRDBText et la deuxieme normalement pour afficher les données de table missions le problème est avec la deuxieme table rien ne s'affiche sur le raport.
    Corrigez moi svp ça devient confus.

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 202
    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 202
    Points : 41 443
    Points
    41 443
    Billets dans le blog
    63
    Par défaut
    Corrigez moi svp ça devient confus.
    en effet

    non, le QR n'a pas besoin d'être sur la même Form . Si tu as créé ton QR via 'creer un nouvel état' c'est même tant mieux . Le seul 'truc' c'est de lier ton QR avec les datasources de ta form .

    en shematisant :

    Form1 contient
    table1 (employés) DataSourceTable1
    table2 (missions) DatasourcesTable2

    Quickreport1
    utilises (uses) Form1
    propriété Dataset Form1.DatasourceTable2

    TitleBand et/ou PageHeaderBand
    contiendront les informations employés
    ie. QRDBTextNom : Dataset = Form1.Table1 DataField = NOM

    DetailBand1 les informations missions
    ie. QRDBTextMission : Dataset = Form1.Table2 DataField = Code

    en gérant le BeforePrint de DetailBand
    DetailBand1.BeforePrint .......
    PrintBand:= <mission sélectionnée>

    <mission sélectionnée>
    1° soluce tu as ajouté le champ boolean ou autre tu testes sur ce champ
    2° soluce beaucoup +complexe tester si le record est sélectionné dans la DBgrid quelque chose avec : form1. dbgrid.selectedrows

    je pense même à une soluce hybride
    si peu de missions par employé mémoriser dans une table mémoire les codes à éditer en fonction de dbgrid.selectedrows (à faire juste avant le QR)

  12. #12
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Merci SergioMaster pour m'avoir éclaircier les choses.
    Au boulot

  13. #13
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut Les étapes pour imprimer un document avec Delphi
    Je clique sur le bouton imprimer, ce dernier ouvre une fenêtre qui contient un champ de saisie pour saisir le matricule du client et un bouton avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Form5.show;
    Form5.Query1.Filter:='MATRI= '+Edit1.Text;
    Form5.Query1.Filtered:=True;
    Form5 s’ouvre, elle contient la grille filtrée. Donc la grille contient seulement les missions du client saisi.
    Ce que je veux c’est faire une nouvelle sélection cette fois-ci sur les missions. Pour cela j’ai rajouté un champ EDITER (comme me l’a proposé SergioMaster); je mets ‘1’ dans le champ si je veux imprimer. Le problème c’est je ne peux rien écrire sur la grille (Je suppose que c’est à cause du filtre ?)
    Comment faire ? j’ai mis table1.Open; j’ai mis table1.Edit; Mais rien à faire !

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 202
    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 202
    Points : 41 443
    Points
    41 443
    Billets dans le blog
    63
    Par défaut
    je pense plutôt que c'est du fait que c'est un Query non modifiable

  15. #15
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    oui c'est surement ça.
    Je vais tenter une autre solution.
    Si vous avez des propositions je vous en remerci.

  16. #16
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    J'ai trouvé une solution :
    Quand je clique sur le bouton imprimer:
    Une fenêtre s'ouvre permettant de saisir le matricule de l'Agent, je clique sur le bouton valider qui contient le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Form5.Table1.filter:=Edit1.text;
    Form5.Table1.filtered:=true;
    Form5.Show;
    Donc la Form5 s'ouvre, cette dernière contient une dbgrid filtrée, et je peux effectuer des MODIFICATIONS .

    PROBLEME :
    Le champ EDITER contient :
    '0' : Ne pas imprimer ! (Le champ EDITER contient '0' par défaut)
    '1' : Imprimer ! (L’utilisateur doit taper 1 pour imprimer) => "Before print"
    '2' : Déjà imprimer, (Après l'impression le programme doit changer le contenu du champ EDITER en '2') => "After Print"

    Je dois utiliser les fonctions "Before print" et "After Print" mais je sais pas comment?
    J'ai essayé ceci mais ça ne marche pas!

    Sélectionné la bande détail ensuite double clique sur Evènements -> BeforePrint
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm4.DetailBand1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
    if (Table1.FieldValues['EDITER'] = 1 ) then
    print;
    end;
    Aidez moi S.V.P

    Merci d'avance...

  17. #17
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 202
    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 202
    Points : 41 443
    Points
    41 443
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par kiminfor Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm4.DetailBand1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
    if (Table1.FieldValues['EDITER'] = 1 ) then
    print;
    end;
    presque il faut modifier la valeur de PrintBand , par exemple comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm4.DetailBand1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
    printband:=(Table1.FieldValues['EDITER'] = 1 );
    end;

  18. #18
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Merci Sergio pour la réponse ça marche parfaitement, enfin résolu


    Maintenant il me reste juste de changer les valeur de EDITER de '1' en '3' après impression (AfterPrint)

    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
     
    procedure TForm4.DetailBand1AfterPrint(Sender: TQRCustomBand;
      BandPrinted: Boolean);
    begin
    Form4.Table1.first;
    Form4.Table1.Open;
     
    while (not form4.Table1.eof) do begin
     
    if (form4.Table1.fieldvalues['EDITER']=1)
    then
    Begin
    Form4.Table1.FieldValues['EDITER'] := 3;
    Form4.Table1.Next;
    end
     
    else
    Form4.Table1.Next;
     
    end;
    end;
    Est ce que c'est bon ?

    Message d'erreur
    Table1: l'ensemble des données n'est pas en mode edition ou insertion

  19. #19
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 202
    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 202
    Points : 41 443
    Points
    41 443
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par kiminfor Voir le message
    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
     
    procedure TForm4.DetailBand1AfterPrint(Sender: TQRCustomBand;
      BandPrinted: Boolean);
    begin
    Form4.Table1.first;
    Form4.Table1.Open;
     
    while (not form4.Table1.eof) do begin
     
    if (form4.Table1.fieldvalues['EDITER']=1)
    then
    Begin
    Form4.Table1.FieldValues['EDITER'] := 3;
    Form4.Table1.Next;
    end
     
    else
    Form4.Table1.Next;
     
    end;
    end;
    Table1: l'ensemble des données n'est pas en mode edition ou insertion
    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
     
    procedure TForm4.DetailBand1AfterPrint(Sender: TQRCustomBand;
      BandPrinted: Boolean);
    begin
    Form4.Table1.Close; // si Besoin
    Form4.Table1.Open;
                                // pas besoin d'un first qui aurait du se trouver ici 
    while (not form4.Table1.eof) do begin
     
    if (form4.Table1.fieldvalues['EDITER']=1)
    then
    Begin
    Form4.Table1.Edit;  // se met en mode modif
    Form4.Table1.FieldValues['EDITER'] := 3;
    Form4.Table1.Post;  // ne pas oublier de valider la modif
    end;
    Form4.Table1.Next; // next de toute façon
    end;
    J'aime pas tellement , j'aurais préféré un SQL
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TABLE1 SET EDITER=3 WHERE EDITER=1
    mais on n'as pas tous les mêmes techniques de programmation

  20. #20
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 89
    Points : 49
    Points
    49
    Par défaut
    Code :

    procedure TForm4.DetailBand1AfterPrint(Sender: TQRCustomBand;
    BandPrinted: Boolean);
    begin
    Form4.Table1.Close; // si Besoin
    Form4.Table1.Open;
    // pas besoin d'un first qui aurait du se trouver ici
    while (not form4.Table1.eof) do begin

    if (form4.Table1.fieldvalues['EDITER']=1)
    then
    Begin
    Form4.Table1.Edit; // se met en mode modif
    Form4.Table1.FieldValues['EDITER'] := 3;
    Form4.Table1.Post; // ne pas oublier de valider la modif
    end;
    Form4.Table1.Next; // next de toute façon
    end;
    C'est bon ça marche ! Sauf que le code doit être appliquer à "QuickRep1AfterPrint " au lieu de "QuickRep1AfterPrint" pour que la valeur change après l'impression du document.

    Voilà, encore Merci SergioMaster :-)) enfin résolu

    Mon projet touche presque à sa fin...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Afficher une recherche après une sélection dans une ListBox
    Par vitalus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/05/2015, 18h04
  2. Réponses: 6
    Dernier message: 06/01/2015, 18h02
  3. [V6] Valeur #EMPTY après une sélection de valeurs
    Par Unsurgent dans le forum Deski
    Réponses: 1
    Dernier message: 13/05/2011, 11h17
  4. Imprimer une sélection de pages de l'aperçu
    Par JeanMarc_T2k dans le forum Rave
    Réponses: 1
    Dernier message: 26/03/2007, 04h53
  5. Réponses: 1
    Dernier message: 07/02/2007, 19h01

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