bnjr, je suis débutante en programmation,MR @ABBAN270 j'avais le mm problème que vous, le code que vous avez mis m'a beaucoup aidé alors je vais oser et vous demander comment imprimer le contenu de ce DBGRID en utilisant ces deux requêtes.
bnjr, je suis débutante en programmation,MR @ABBAN270 j'avais le mm problème que vous, le code que vous avez mis m'a beaucoup aidé alors je vais oser et vous demander comment imprimer le contenu de ce DBGRID en utilisant ces deux requêtes.
Bonjour et meilleurs vœux
je vais vous répondre ainsi : on n'imprime pas une grille, on imprime des données, donc on utilise les deux datasources avec son générateur d'états.
Bien évidemment si vous nous indiquiez quel est le votre la réponse serait plus complète .
Ensuite, si la raison de votre état est de lister le nombre jours d'absence par employé, non, il n'est pas besoin de deux requêtes une seule, cf le SQL de ma première réponse (post #3), est nécessaire.
Enfin, indiquez votre version de Delphi, votre SGBD, la description des tables et votre générateur d'état cela aidera d'avantage
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Bonjour et bienvenue parmi nous
N'hésite pas à ouvrir une nouvelle discussion parlant d'impression de grille pour avoir des réponses en rapport avec ton besoin plutôt que continuer sur un problème de remplissage. Ce sera plus pratique pour les suivants qui feraient des recherches et tomberont sur la discussion qui leur apportera des solutions ou idées plutôt que de se mélanger avec d'autres.
D'une façon générale, en Delphi, pour imprimer on a un TPrinter qui s'appelle Printer et nous permet de dessiner les pages à envoyer à l'imprimante, une par une.
Il n'y a rien en standard pour partir d'une DBGrid et l'imprimer.
En revanche on peut utiliser l'une des solutions de reporting comme par exemple Fast Reports (qui propose une version light dans GetIt) ou le module (payant) de reporting lié aux composants HTML de https://delphihtmlcomponents.com/reports.html parmi une bonne dizaine d'autres (commerciaux, open sources, trop souvent non maintenus).
merci bq pour votre attention, ce que je voulais dire c'est que je veux imprimer le contenu de ce DBGRID (l’état), les données b1 sur, j'utilise DELPHI /RAD studio 10.3 , SGBD acces 2010 ,et le composant QReport pour imprimer mes états. la difficulté que j'ai trouvé c que je ne sais pas comment faire pour lier les composants de mon QREPORT (QRDBtext) avec ces requêtes pour avoir imprimer l’état de ces données.(affecter le query utilisé au dataset de ces composants en effet n'a r1 donner)
Bon, maintenant que l'on est fixé : il s'agit de QuickReport on peut avancer, un peu. (Delphi 10.3 donc dommage de renoncer à utiliser FASTReport mais, il est vrai que la version "Delphi" ne gère pas les scripts)
resterai à donner les descriptions des tables pour fournir un SQL correct.
P.S. dans un souci de bien faire j'ai créé cette nouvelle discussion
Tout d'abord, oubliez cette histoire de grille. La seule question qui reste pour moi en suspend est : le dessin de sortie.
S'agit-il d'obtenir :
- une liste le nombre jours d'absence par classé par employé
- un détail des jours d'absences par employé (avec un resumé)
Je suis un peu rouillé avec QuickReport mais comme vous allez vous en appercevoir seule la query est importante.
Dans le cas 1 la requête aura la forme suivante
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT e.nom,e.Prenom,sum(a.jours) FROM EMPLOYES E LEFT JOIN ABSENCES a ON e.ID_EMPLOYE=a.ID_EMPLOYE WHERE -- à vous de mettre les clauses
Dans ce cas, hors fioritures (bande titre, bande column header etc...) vous indiquez le dataset de la requête au niveau du QuickReport, vous ajoutez une bande détail, posez les 3 QRDBText et le tour est joué.
Dans le cas 2, la requête sera un peu plus complexe selon que vous voulez :
A - uniquement les employés qui ont des absences
B - tous les employés qu'il y ait absence ou pas
Cas A
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT a.ID_EMPLOYE,a.JOURS,a.DATE_ABS, e.NOM,e.PRENOM FROM ABSENCES a JOIN EMPLOYES e on e.ID_EMPLOYE=a.ID_EMPLOYE WHERE -- à vous de mettre les clauses
Dans le quickreport vous allez mettre comme déjà indiqué : une bande détail mais vous allez ajouter une bande Entete de groupe avec l'expression ID_EMPLOYE, bande dans laquelle vous mettrez les DBtext pour les colonnes nom et prénom)
dans la bande détail vous mettrez le nombre de jour et tous les détails nécessaires au sujet de l'absence (date, raison, etc...)
puis vous ajouterez une nouvelle bande qui sera uun pied de groupe dans laquelle vous mettrez une QRExpression qui sera SUM(JOURS) bien entendu avec la propriété ResetAfterPrint à true qui vous donnera ainsi le total par employé
Le Cas B est un peu plus délicat voici la requête
cependant vous devrez penser à gérer dans les évènement onprint les valeurs NULL (par exemple dans ce SQL celui de la Date_ABS)
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT e.ID_EMPLOYE,e.NOM,e.PRENOM,COALESCE(a.JOURS,0),a.DATE_ABS, ... FROM employes e left join ABSENCES a on e.ID_EMPLOYE=a.ID_EMPLOYE
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager