jcolibri- rave report tutorial

36
Home articles bdd rave_report_tutorial Rave Report Tutorial - John COLIBRI. résumé : Comment utiliser Rave Reports pour construire des états: données provenant d'une table, maître détail, titres et sous-totaux, réutilisation de parties, impression par programmation Delphi mots clé : Rave Report - génération d'état - fichiers .PDF, .HTML - tRvProject - Rave Designer logiciel utilisé : Windows XP personnel, Delphi 2006 - Rave Reports 6.5 BE (== Borland Edition) matériel utilisé : Pentium 2.800 Mhz, 512 Meg de mémoire, 250 Giga disque dur champ d'application : Delphi 7, Delphi 8, Delphi 2005, Delphi 2006, Delphi 2007, Win32 ou .Net niveau : développeur Delphi Windows plan : Reporting en Delphi Imprimer la Table d'une base avec Rave Reports Création d'états Rave Report Rave Designer autonome Remarques sur Rave Reports Télécharger le code source Delphi 1 - Reporting en Delphi Jusqu'à Delphi 6, le générateur d'état installé avec Delphi était Quick Report. Après Delphi 6, Borland (Devco, CodeGear) a proposé plusieurs générateurs d'états, et pour les versions Win32, essentiellement Rave Reports (pour la version .Net, Crystal Report semble privilégié, mais Rave Reports a aussi sorti une version pour .Net, mais qui ne sera pas présentée ici). Notre but est de présenter ici comment utiliser Rave Reports pour réaliser ses premiers états. Rave Reports est essentiellement un générateur "à bandes", comme Quick Report l'était. Mais une séparation soigneuse des fonctionalités permet d'utiliser Rave Reports 2 - Imprimer la Table d'une base avec Rave Reports 2.1 - Générateurs par Code et Générateurs par Bande Il existe en gros deux grandes familles de générateurs d'état: les générateurs à code, où le développeur utilise dans des procédures Delphi des appels à des librairies pour afficher des titres, des colonnes, effectuer des sous-totaux etc les générateurs à bande, où le développeur place sur une surface de conception des "bandes" qui représentent la ligne courante du futur état. La librairie de reporting utilise alors ce modèle pour formater les données à imprimer John COLIBRI + Home + articles_avec_sources + bases_de_donnees + programmation_oracle + interbase + sql_server + firebird + mysql + xml paradox_via_ado mastapp delphi_business_objects clientdataset_xml data_extractor rave_report_tutorial visual_livebindings migration_bde + web_internet_sockets + prog_objet_composants + office_com_automation + colibri_utilities + uml_design_patterns + graphique + delphi + outils + firemonkey + vcl_rtl + colibri_helpers + colibri_skelettons + formations + developpement_delphi + présentations + pascalissime + livres + entre_nous télécharger contacts plan_du_site – chercher : RSS feed Blog jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_... 1 of 36 02/02/2014 13:44

Upload: lequeteur

Post on 21-Oct-2015

338 views

Category:

Documents


28 download

TRANSCRIPT

Page 1: jColibri- Rave Report Tutorial

Home articles bdd rave_report_tutorial

Rave Report Tutorial - John COLIBRI.

résumé : Comment utiliser Rave Reports pour construire des états: donnéesprovenant d'une table, maître détail, titres et sous-totaux, réutilisation de parties,impression par programmation Delphimots clé : Rave Report - génération d'état - fichiers .PDF, .HTML - tRvProject -Rave Designerlogiciel utilisé : Windows XP personnel, Delphi 2006 - Rave Reports 6.5 BE (==Borland Edition)matériel utilisé : Pentium 2.800 Mhz, 512 Meg de mémoire, 250 Giga disque durchamp d'application : Delphi 7, Delphi 8, Delphi 2005, Delphi 2006, Delphi 2007,Win32 ou .Netniveau : développeur Delphi Windowsplan :

Reporting en DelphiImprimer la Table d'une base avec Rave ReportsCréation d'états Rave ReportRave Designer autonomeRemarques sur Rave ReportsTélécharger le code source Delphi

1 - Reporting en Delphi

Jusqu'à Delphi 6, le générateur d'état installé avec Delphi était Quick Report. Après Delphi 6, Borland(Devco, CodeGear) a proposé plusieurs générateurs d'états, et pour les versions Win32, essentiellementRave Reports (pour la version .Net, Crystal Report semble privilégié, mais Rave Reports a aussi sorti uneversion pour .Net, mais qui ne sera pas présentée ici).

Notre but est de présenter ici comment utiliser Rave Reports pour réaliser ses premiers états.

Rave Reports est essentiellement un générateur "à bandes", comme Quick Report l'était. Mais uneséparation soigneuse des fonctionalités permet d'utiliser Rave Reports

2 - Imprimer la Table d'une base avec Rave Reports

2.1 - Générateurs par Code et Générateurs par Bande

Il existe en gros deux grandes familles de générateurs d'état:

les générateurs à code, où le développeur utilise dans des procédures Delphi des appels à deslibrairies pour afficher des titres, des colonnes, effectuer des sous-totaux etc

les générateurs à bande, où le développeur place sur une surface de conception des "bandes" quireprésentent la ligne courante du futur état. La librairie de reporting utilise alors ce modèle pourformater les données à imprimer

John COLIBRI

+ Home + articles_avec_sources + bases_de_donnees + programmation_oracle + interbase + sql_server + firebird + mysql + xml – paradox_via_ado – mastapp –delphi_business_objects – clientdataset_xml – data_extractor – rave_report_tutorial – visual_livebindings – migration_bde + web_internet_sockets + prog_objet_composants + office_com_automation + colibri_utilities + uml_design_patterns + graphique + delphi + outils + firemonkey + vcl_rtl + colibri_helpers + colibri_skelettons + formations + developpement_delphi + présentations + pascalissime + livres + entre_nous – télécharger

– contacts– plan_du_site– chercher :

RSS feedBlog

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

1 of 36 02/02/2014 13:44

Page 2: jColibri- Rave Report Tutorial

Quick Report était nettement un outil à bande.

Rave Reports en revanche est un outil hybride:

nous pouvons créer des états uniquement par codenous pouvons aussi utiliser des états à partir de modèles à bandes

Nous allons tout d'abord présenter comment utiliser Rave Reports pour imprimer le contenu d'une Tableprovenant d'une base de données, puis nous examinerons les autres possiblités offerte par Rave Reports

2.2 - Comment imprimer la Tables d'une Base

Pour réaliser un état Rave Reports nous pouvons utiliser les étapes suivants:

nous créons un projet Delphi, et armons une Table sur la Forme (le moteur peut être dBase,Paradox, Access, Interbase, SqlServer etc. Les composants d'accès le BDE, dbExpress, InterbaseExpress etc)nous utilisons un composant tRvProject. Celui ci

permet de lancer le Designer Rave, qui est un .EXE indépendant permettant de spécifier lecontenu de notre état.contient une méthode tRvProject.Execute qui imprime notre état

Le Designer Rave est une application très semblable à Delphi, avec une Palette, un Inspecteur, unesurface de dessin. Nous pouvons aussi prévisualiser cet état. Puis nous devons sauvegarder lesparamètres de cet état dans un fichier .RAV qui sera réutilisé par Delphi pour imprimer l'état. Un fichier.RAV, est une sorte de .DFM (un codage binaire sur disque des paramètres de l'état). En réalité, leDesigner est un outil annexe pour créer le fichier .RAV qui est utilisé pour lancer une impression depuisDelphi.

Schématiquement, ceci peut se représenter par les schémas suivants:

une appplication Delphi importe les données d'une base de données

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

2 of 36 02/02/2014 13:44

Page 3: jColibri- Rave Report Tutorial

Rave Designer est lancé en étant lié à Delphi:

le développeur utilise Rave Designer pour construire l'état. prévisualise éventuellement l'état, puissauvegarde le résultat dans le fichier .RAV :

Delphi exécute l'état ainsi défini

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

3 of 36 02/02/2014 13:44

Page 4: jColibri- Rave Report Tutorial

Les étapes sont donc les suivantes

créer un projet Delphi qui charge une Table d'une base de donnéeslancer depuis Delphi le Rave Designer

relier Delphi et le Rave Designerconstruire le rapport avec Rave Designer. Celui ci contiendra nos fameuses bandeséventuellement pré-visualiser le résultatsauvegarder les fichier

lancer l'impression de cet état depuis Delphi

2.3 - Charger une Table BDE dans un projet Delphi

Nous allons imprimer le contenu de CUSTOMER.DB, qui est une Table Paradox fournie dans la baseDBDEMOS avec Delphi

Les étapes sont les suivantes:lancez Delphi 2006 (multi-personnalité, ou version Win32)créez un nouveau projet par "File | New | Vcl Forms Application - Win32" et sauvegardez le projetsous p_01_rave_db_bdeinitialisez les composants pour accéder à CUSTOMER.DB

dans la Tools Palette, sélectionnez BDE, puis tTable, et posez-la sur la Formedans l'Inspecteur d'Objet initialisez les propriétés suivantes:

DataBase à DBDEMOSTableName à CUSTOMER.DBActive à True

dans la Palette, de la page "Data Access", sélectionnez tDataSource, et dans l'Inspecteur,initialisez DataSet à Table1dans la Palette, de la page "Data Controls", sélectionnez dbGrid, et dans l'Inspecteur,initialisez DataSource à DataSource1

le contenu de CUSTOMER est affiché dans la dbGrid

Notez que

l'affichage dans la dbGrid est uniquement pour vérifier que nous avons bien accès aux donnéesd'une Table. En fait, seul Table1 est nécessaire.

2.4 - Ajouter un Projet Rave Reports à notre projet Delphi

A présent, préparons l'état:dans la Palette, sélectionnez l'onglet "Rave", sélectionnez le composant tRvProject:

Audit Delphi Bilantechnique (technologie,méthodes, architecture,organisation, techologie etversion, formation, gestionde projet) etrecommandations - Tél01.42.83.69.36

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

4 of 36 02/02/2014 13:44

Page 5: jColibri- Rave Report Tutorial

et posez-le sur la Forme

de la Palette, sélectionnez tRvDataSetConnection:

et posez-le sur la Forme. Dans l'Inspecteur, initialisez sa propriété DataSet à Table1

2.5 - Créer l'état avec Rave Designer

2.5.1 - Lancer Rave Designer depuis Delphi

Pour lancer Rave Designer, il fautcliquer deux fois sur RvProject1Rave Designer est lancé

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

5 of 36 02/02/2014 13:44

Page 6: jColibri- Rave Report Tutorial

Vous distinguerez sans difficulté (image rétrécie pour éviter le défilement):

en haut un menuen dessous une Toolbar et une Paletteà gauche un Inspecteur. Les propriétés affichées sont celles de l'object courant sélectionné(coche verte) dans le TreeView de droiteau centre la zone de dessin

Par défaut, le TreeView de droite contient un rapport Report1 (actuellement sélectionné par la cocheverte), avec une page Page1. Si quelqu'un a utilisé le Designer auparavant, il est possible que ceTreeView contienne les informations d'un projet précédent. Dans ce cas, selectionnez "File | New", etvous retrouverez un nouveau projet vide, avec un premier rapport Report1 et une première page Page1.Ces noms, Report1 et Page1, peuvent, bien sûr être modifiés en utilisant l'Inspecteur.

2.5.2 - Relier Rave Designer et notre Table Delphi

Une fois le Rave Designer ouvert avec un nouveau projet, il faut ajouter un composant DataView, quiassurera le transfert des données depuis Delphi vers RaveReport. Pour cela:

créez un nouveau DataView en sélectionnant "File | New Data Object"

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

6 of 36 02/02/2014 13:44

Page 7: jColibri- Rave Report Tutorial

ou en cliquant directement l'icône de la Toolbar:

Rave Designer présente le dialogue de sélection de connections:

sélectionnez "Direct Data View" et cliquez "Next"Rave Designer présente tous les composants tRvDatasetConnection composants actuellementprésents sur la Forme Delphi.

Dans notre cas il n'y en a qu'un

sélectionnez RvDatasetConnection1 et cliquez "Finish"

Rave Designer ajoute un DataView dans le "Data View Dictionary" de droite.

pour visualiser le contenu du DataView, cliquez "Data View Dictionary", puis "DataView1"tous les champs de notre table sont présentés dans le TreeView de droite:

Notez aussi que l'Inspecteur présente les propriétés de DataView1

2.5.3 - Création du Rapport Report1

Nous pouvons maintenant construire notre état.

Comme indiqué plus haut, il va falloir placer une bande qui représente la ligne courante de notre état.

Formation InitiationDelphi L'outil dedévelopppement, lelangage deprogrammation, lescomposants - 3 jours

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

7 of 36 02/02/2014 13:44

Page 8: jColibri- Rave Report Tutorial

Rave Designer exige que ces bandes soient placées dans un conteneur appelé Region. C'est la Regionqui définit le nombre de répétition d'une ligne: il est calculé en divisant la hauteur de la région par lahauteur de la bande. Par conséquent:

Par conséquent:dans le TreeView, sélectionnez Page1dans la Palette, sélectionnez l'onglet "Report", et sur cet onglet, le composant Region:

et posez le sur la surface, pour qu'il occupe environ 80% de la surface

la région est affichée en gris sombre (rétréci):

dans la Palette, sélectionnez une DataBand

et posez-la sur la Region1

la bande se place au sommet de la région:

dans l'Inspecteur, sélectionnez DataView et affectez-lui la valeur DataView1sélectionnez DataView1 dans le TreeView de droite, puis en appuyant Contrôle et en tirant-glissant, déplacez quelques champs de DataView sur la DataBandpour faire joli ajoutez un titre en haut de la page: de l'onglet "Standard" de la Palette, sélectionnezun Text

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

8 of 36 02/02/2014 13:44

Page 9: jColibri- Rave Report Tutorial

et posez-le au sommet de la page

voici l'allure de notre page, avec le TreeView montrant la structure actuelle de notre page:

Notez que

les icônes de tous les éléments Rave Reports liés à des données (Region, DataText, CalcText quenous examinerons plus tard) se distinguent par un discret point rouge sombre en haut à droite:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

9 of 36 02/02/2014 13:44

Page 10: jColibri- Rave Report Tutorial

2.5.4 - Prévisualisation depuis Rave Designer

Nous pouvons déjà visualiser le résultat de cet état:sélectionnez le menu "File | Execute Report", ou cliquez l'icône de la Toolbar correspondante:

le dialogue de sélection de sortie est affiché:

sélectionnez "Preview" et cliquez "Ok"la page est pré visualisée:

Notez que

nous avons choisi de prévisualiser. Nous aurions aussi pu imprimer le rapport, ou créer différentstypes de fichiers

.PDF, .HTML, .RTF, .TXT

.PRN qui est un fichier imprimante

FormationPerfectionnement DelphiLes techniques avancées :la programmation objet,l'écriture de composants,l'accès aux bases dedonnées, Xml, le multi-tâche, la programmationInternet - 5 jours

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

10 of 36 02/02/2014 13:44

Page 11: jColibri- Rave Report Tutorial

.NDR qui est un fichier de résulat d'impression Rave ReportsNous pourrions donc utiliser Rave Designer pour générer des documents Acrobat, rédiger descourriers Word, et construire des pages Web !

2.5.5 - Sauvegarde du projet Rave Reports dans un fichier .RAV

Finalement il FAUT sauvegarder les paramètres de notre état dans un fichier .RAV:selectionnez "File | Save As" et sauvegardez le fichier dans le répertoire du projet Delphi, sous lenom de "rave_first_project"le fichier est sauvegardé sous RAVE_FIRST_PROJECT.RAV

Notez que

comme Rave Designer est une application séparée de Delphi, elle gère son historique séparément."Save As" peut très bien présenter par défaut un autre répertoire que le répertoire sous lequel vousavez sauvegardé le .DPR. Vous pouvez sauvegarder le .RAV n'importe où, mais il faudra pouvoirle retrouver depuis Delphi, ce que nous allons examiner à présent

2.6 - Impression depuis Delphi

Pour prévisualiser un état, nous utilisons tRvProject.Execute:

RvProject1.Open;RvProject1.SelectReport('Report1', False);RvProject1.Execute;RvProject1.Close;

où "Report1" est le nom du rapport dans Rave Designer que nous souhaitons imprimer. Lorsqu'il n'y aqu'un seul rapport dans le projet (ce qui est notre cas), l'appel de SelectReport est optionnel.

Par conséquent:sélectionnez Delphisélectionnez RvProject1, sélectionnez sa propriété ProjectFile, ouvrez l'ellipse et sélectionnez lefichier RAVE_FIRST_PROJECT.RAVposez un tButton sur la Forme, nommez-le "preview_" et dans son événement Click lancezl'impression:

procedure TForm1.preview_Click(Sender: TObject);beginWith RvProject1 dobeginOpen;// SelectReport('Report1', False);Execute;Close;

end; // With RvProject1end; // preview_Click

compilez, exécutez et cliquez "preview_"

le dialogue de sélection des sorties est présenté (le même que celui utilisé par Rave Designer)

sélectionnez "Preview" et cliquez "Ok"la page est pré visualisée. Voici la vue de l'application Delphi et de la prévisualisation

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

11 of 36 02/02/2014 13:44

Page 12: jColibri- Rave Report Tutorial

Notez que

comme Rave a du parcourir toute la Table pour construire le résultat, notre dbGrid est bloqué enfin de Table. D'ailleurs nous ne pouvons pas quitter la prévisualisation sans fermer cette fenêtre(ShowModal de toute évidence). Lorsque nous fermons la pré-visualisation, la dbGrid serepositionne au bon endroit.

2.7 - Les possibilités Rave Reports

Maintenant que nous avons vu comment réaliser notre premier état, nous pouvons mettre Rave Reportsen perspective.

l'essentiel, à nos yeux, est tout d'abord de bien maîtriser la création de rapports contenant desTables avec Rave Designer: calculs de totaux, titres de colonnes, chaînage des pages etcRave Report peut être utilisé de façon indépendante et le résultat lancé depuis Delphinous pouvons aussi créer des impressions par code uniquement, sans utiliser Rave Designerfinalement nous pouvons utiliser des scripts Rave Reports

Ces possibilités peuvent être résumées par le schéma suivant

3 - Création d'états Rave Report

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

12 of 36 02/02/2014 13:44

Page 13: jColibri- Rave Report Tutorial

3.1 - Un Etat d'une Table Interbase

Nous pouvons utiliser d'autres moteurs Sql que Paradox, et d'autres composants d'accès que le BDE.Pour imprimer, depuis Delphi, il suffit simplement de charger un tDataSet avec les données désirées.

Montrons, pour la forme, comment imprimer une Table Interbase (en accéléré !)créez un nouveau projet Delphi 2006 Win32, et nommez-le p_02_db_ibxposez un IbDataBase, cliquez deux fois sur IbDatabase1 et initialisez la base (EMPLOYEE.GDBdans notre cas), USER (SYSDBA) et PASSWORD (masterkey)posez un tIbTransaction et liez-la à IbDatabase1posez un IbQuery, initialisez Database et initialisez Sql avec la table DEPARTMENT, basculezActive à Trueà titre de vérification posez une DataSource et une dbGrid, connectez le toutposez un tRvProject, une tRvDataSetConnection comme présenté ci-dessus, ouvrez RaveDesigner, créez un nouveau Report et construisez l'étatposez un tButton pour lancer l'impression, initialisez RvReportFileNamecompilez et exécutezvoici le résultat:

Nous utiliserons le BDE pour nos exemples ci-dessous, mais vous pouvez naturellement choisir une autrebase / un autre jeu de composants d'accès.

3.2 - Paramètres Globaux

Par défaut, notre version de Rave Designer utilise des inch. Pour passer en centimètres, il faut changerles paramètres, et ceci doit être effectué avant de créer un état ou un page.

Nous démarrons d'abord un nouveau projet avec un Table CUSTOMER comme indiqué dans notrepremier exemple:

créez un nouveau projet Delphi 2006 Win32, et nommez-le p_03_rave_subtotalposez une tTable, initialisez Database avec DBDEMOS, TableName avec CUSTOMER.DB etbasculez Active à Trueà titre de vérification posez une DataSource et une dbGrid, connectez le toutposez un tRvProject, une tRvDataSetConnection comme présenté ci-dessus, ouvrez RaveDesigner, créez un nouveau Report

Puis, une fois dans Rave Designersélectionnez "Edit | Preferences | Defaults"

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

13 of 36 02/02/2014 13:44

Page 14: jColibri- Rave Report Tutorial

la page des paramètres par défaut est affichée

changez "Units" en cm, et "Draw Grid Every" en 10, et cliquez "Ok"

créez un nouveau projet Rave Reports, en sélectionnant "File | New"

un nouveau projet Rave Reports est affiché avec une grille en cm (21,0 cm de large)

Notez que

les nouveaux paramètres sont aussi présentés dans les propriétés de l'élément RaveProject

3.3 - Fond de Page - Héritage de page

Nous pouvons placer dans des "Pages Globales" des parties qui peuvent être réutilisées par n'importequelle page de n'importe quel état (de ce projet Rave Reports). Pour cela, il faut:

créer une page globale et la garnir avec les éléments qui seront incorporés à nos autres étatslorsque nous souhaiterons récupérer ces éléments dans une page, ajouter cette page globalecomme "page miroir"

Voici un exemple:sélectionnez "File | New Global Page", ou cliquez l'icône de la Toolbar:

une page globale est ajoutée (elle figure dans le TreeView à droite, et devient la seconde page duNoteBook central). Cette page ressemble en tout point à une page normalede l'onglet "Standard" de la Palette, sélectionnez une Section:

et placez la en haut de la page globale

sélectionnez une Bitmap:

et placez la sur Section1. Initialisez sa propriété FileLink avec le chemin et le nom d'un fichier.BMP

l'image est affichée

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

14 of 36 02/02/2014 13:44

Page 15: jColibri- Rave Report Tutorial

sélectionnez un élément "Text" et placez un titre sur la section, initialisez sa propriété Text avec untitrevoici notre page globale avec sa section:

Voici comment incorporer cette section dans une page d'un quelconque Report:sélectionnez Page1 (par l'onglet du NoteBook central ou par le TreeView de droite)sélectionnez une Section et placez-la où vous voulez voir apparaître l'image et le titre. En haut dansnotre cas.les éléments de la section globale sont affichés

à titre d'exercice ajoutez un Text sur la Section copiéevoici le résultat:

Notez que

les Sections jouent le même rôle que les tPanels Delphi

pour les miroirsle point haut à gauche définit la position de la copie, mais la largeur et hauteur initiales sontdéfinis par l'original. Ces propriétés de position ed de taille peuvent être ensuite modifiées,mais pas les éléments de la section originale (l'image et le titre).toute modification de la section originale est répercutée à tous ses miroirsnous pouvons ajouter de nouveaux éléments à la section miroirune Section d'une Page d'un Report peut être utilisée comme la source pour un miroir d'uneautre Page de ce même Report.

Ainsi la notion de "page globale" sert, comme en Pascal, à regrouper les sections communesà tous les Reports d'une même Project.

En revanche, n'importe quelle Section peut être utilisée comme source et être copiée(mirror) dans la section d'une autre Page: nous pouvons utiliser les Sections d'unequelconque page du même Report ou celles d'une quelconque page globale. En fait lapropriété Mirror nous présente ce qui est disponible

3.4 - Variables de Report et Expressions

Nous pouvons ajouter des éléments tels que la date, le numéro de page etc. Cela se fait par le biaisd'élément DataText dont nous spécifions le contenu à l'aide d'un Editeur spécialisé.

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

15 of 36 02/02/2014 13:44

Page 16: jColibri- Rave Report Tutorial

Voici comment ajouter le numéro de page à Page1:sélectionnez Page1de l'onglet "Report" de la Palette, sélectionnez un DataText:

et posez le sur Page1 (dans la section du titre par exemple, ou ailleurs)

dans l'Inspecteur, sélectionnez DataField et cliquez l'ellipse ...l'Editeur de Données est affiché (sans les marques de couleur):

L'Editeur fonctionne ainsi:vous sélectionnez ou tapez une valeur dans les combo marquées d'une croix rouge

vous cliquez l'un des boutons dans le rectangle jaunele texte correspondant est affiché dans le tMemo du bas (points d'exclamation verts) ou vouspouvez modifier le texte à votre guise

Pour avoir la date, il faut utiliser la variable Report.CurrentPage. Donc:dans la combo "Report Variables", sélectionnez CurrentPage (elle est sélectionnée par défaut),puis cliquez "Insert Report Var"Report.CurrentPage est ajouté à la position courante dans le tMemo du basajoutez un peu de texte libre, par exemple

'page no' +

(le texte est entre guillemets simples, et concaténé par +) et cliquez "Ok"changez éventuellement la police et sa couleurvoici le résultat

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

16 of 36 02/02/2014 13:44

Page 17: jColibri- Rave Report Tutorial

3.5 - Bande Titre de Colonne

3.5.1 - Les Bandes de titre et de totaux

Les titres de colonnes et les sous totaux divers sont des éléments Band (pas DATAband, mais BAND).Ils sont aussi placés sur une Region, et encadrent en général des DataBand qui contiennent les donnéesdes lignes d'une Table. De plus ces lignes devront contenir une référence de la bande détail qu'ilsencadrent.

C'est un peu similaire à un code Pascal utilisé pour calculer un total:

nous initialisons le totalune boucle effectue les calculnous affichons le résultat

xxx

my_total:= 0;FOR my_index:= 0 TO 10 DOBEGIN

Inc(my_total, ...ooo...);END; // forCaption:= IntToStr(my_total);

Au niveau Rave Reports, nous encadrons de même la ligne courante par une bande de titre(initialisation) et une bande qui affiche des sous-totaux (affichage du résultat). Mais au lieu de décalerles calculs vers la droite, Rave Reports considère que la bande détail est "au-dessus" du niveau quicontient les bandes titres et sous-totaux:

Les titres peuvent être disposés à plusieurs endroits:

uniquement au début de la première ligne de donnéesau début des lignes de chaque nouvelle pageà la fois au début de la première ligne ET des premières lignes de chaque page etc

Cette position est spécifiée par la propriété Band.BandStyle.

3.5.2 - Ajout d'une bande de données détail

D'abord, ajoutons notre Table:dans Rave Designer, sélectionnez "File | New Data Object | Direct Data View" et cliquez "Next" et

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

17 of 36 02/02/2014 13:44

Page 18: jColibri- Rave Report Tutorial

sélectionnez RvDatasetConnection1de l'onglet "Report" de la Palette, sélectionnez Region et placez-la sous le titre

sélectionnez DataBand, posez-la sur Region1, et initialisez DataView à DataView1dans le TreeView, sélectionnez "Data View Dictionary | DataView1", puis avecContrôle-Click gauche souris, tirez et glissez quelques champs sur DataBand1sélectionnez "File | Execute Report" pour vérifier le résultat

3.5.3 - Ajout de la Bande de titre

Ajoutons un titre:sélectionnez l'onglet "Report", puis l'élément Band

et placez-la sur la Region

la bande est placée APRES la bande donnéesélectionnez l'onglet "Alignment" de la Palette et l'icône "Move Behind"

Band1 est placé au sommet de Region1, et "en dessous"

dans l'Inspecteur, sélectionnez ControllerBand et affectez lui la valeur DataBand1le symbole de Band1 devient une flèche vers le bas

sélectionnez BandStyle pour préciser où les titres devront être affichésun éditeur de bande est présenté:

Dans cet éditeur:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

18 of 36 02/02/2014 13:44

Page 19: jColibri- Rave Report Tutorial

la bande qui a été utilisée pour ouvrir l'éditeur est soulignée (Band1 ici)les symboles (triangle ou losange) sont reproduitsles DataBand sont présentés 3 fois pour "représenter la répétition". Nous n'avons qu'uneseule DataBand, mais cette répétition préfigure, avec un peu d'imagination, la répétition deslignes de la Tablenormalement "Body Header" et "First" sont cochés

coches "Body Header", "First" et "New Page" et cliquez "Ok"placez quelques titres sur Band1:

de l'onglet "Standard", sélectionnez Text, posez-le sur Band1, et initialisez sa propriété Text,par exemple "Numéro"ajoutez de même d'autres titres de colonne

ajoutez aussi une trait horizontal pour séparer le titre

de l'onglet "Drawing" sélectionnez la ligne horizontale, et placez la sous les titres

voici notre maquette:

Sauvegardez l'étatsélectionnez "Save As" et tapez le nom, par exemple "rave_sub_total_project"

Retournez sur la Forme Delphi et lancez l'étatsélectionnez RvProject1 et initialisez ProjectFileajoutez un tButton qui lance l'éxécution du projet

compilez et exécutezvoici notre rapport

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

19 of 36 02/02/2014 13:44

Page 20: jColibri- Rave Report Tutorial

3.5.4 - Ajout d'une bande de sous-totaux

Calculons, par exemple, le nombre de lignes de notre état. Pour cela, nous allons

ajouter une Band, et spécifier qu'elle est une bande de pied de lignes (Footer band)placer sur cette Band un CalcText et initialiser ses liens avec la DataBand ainsi que l'expression decalcul

Donc:de l'onglet "Report", sélectionnez une Band et placez-la sur la Forme.

son icône est un losange rouge

Dans ControllerBand, sélectionnez DataBand1son icône devient un triange pointant vers le haut (Band1, DataBand1 et Band2 font partie de lamême boucle)

Sélectionnez BandStyle, et dans l'Editeur, sélectionnez "Body Footer"

sélectionnez CalcText:

et posez le sur Band2.

Puis, dans l'Inspecteur

sélectionnez la propriété Controller, et initialisez la à DataBand1sélectionnez CalcType et initialisez-la à ctCountsélectionnez DataField, et dans l'Editeur, dans "Data Field", sélectionnez "CustNo" etcliquez "Insert Field". L'expression devient:

DataView1.CustNo

pour la forme, ajoutez une ligne de séparation horizontale, et un Text "Nombre de clients :"

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

20 of 36 02/02/2014 13:44

Page 21: jColibri- Rave Report Tutorial

voici notre maquette:

sélectionnez "File | Execute Report"voici le résultat (dernière page):

sauvegardez le projet Rave Reports

Notez que:

sur chaque bande se trouve un résumé de l'emplacement (header, footer ...) et de l'occurence(First, New Page ...). L'explication des lettres (B, b etc) se trouve dans le dialogue BandStyle

nous ne détaillerons pas toutes les opérations possibles (somme, moyenne, ...)d'autres opérations sont possibles en utilisant les éléments CalcOp ou CalcTotal

3.6 - Relation Maître Détail

Nous allons à présent imbriquer des bandes pour présenter les factures de chaque client.

Commençons par ajouter notre seconde Table:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

21 of 36 02/02/2014 13:44

Page 22: jColibri- Rave Report Tutorial

sélectionnez le projet Delphiajoutez une nouvelle tTable (DBDEMOS, "ORDERS.DB", True)ajoutez une RvDataSetConnection (Dataset= Table2), éventuellement une DataSource / dbGridpour vérificationcompilez et exécutez pour vérifier le tout

Importons la Table "ORDERS.DB" dans Rave Designer:sélectionnez Rave Designersélectionnez "File | New Data Object | Direct Data View | Next | RvDataSetConnection2 | Finish"les champs de la table ORDERS sont affiché dans le TreeView sous "Data View Dictionary |DataView2"

Préparons maintenant une nouvelle page:sélectionnez "File | New Report Page"

Page2 est ajoutée au projet (nouvel onglet central, nouvel élément dans le TreeView de droite)ajoutez un titre à cette page:

posez un Section en haut de la pagedans sa propriété Mirror, sélectionnez Page1.Section1 (un miroir d'une section d'une autrepage)

pour distinguer visuellement cette page de la Page1, placez sous le titre un Rectangle, avec unebordure de couleur

Pour que l'exécution affiche notre nouvelle Page2 (et non pas Page1), il faut:

soit chaîner Page1 à Page2, en initialisant Page1.GotoPage à Page2soit, pour nos essais, spécifier que seule Page2 doit être imprimée.

Pour cela:dans le TreeView, sélectionnez Report1sélectionnez PageList et cliquez l'ellipse ...l'Editeur de page est affiché

dans "Report Pages", sélectionnez "Page2", et cliquez "Add Page" et "Ok"

à titre de vérification, exécutez l'impressionPage2 est affichée

Et plaçons nos bandes:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

22 of 36 02/02/2014 13:44

Page 23: jColibri- Rave Report Tutorial

posez une Region qui occupe la place sous le titresur la Region, posez

une Band pour le titredeux DataBand (pour le maître et le détail)une Band pour les totaux

initialisez les positions et occurences des bandes:

sélectionnez Band1, etdans ControllerBand, sélectionnez "DataBand1"dans BandStyle, sélectionnez "Body Header", "First", "New Page"

sélectionnez DataBand1 etdans BandStyle, sélectionnez "Body Header"

sélectionnez DataBand2 etdans ControllerBand, sélectionnez "DataBand1"dans BandStyle, sélectionnez "Detail"

sélectionnez Band2, etdans ControllerBand, sélectionnez "DataBand1"dans BandStyle, sélectionnez "Footer"

l'éditeur de style "représente" le type de répétition de notre état:

Notez que les codes de couleur sont là uniquement pour représenter l'emboîtement des répétitions(et non pas, comme nous le croyions au début pour représenter un état "bien initialisé" et "noninitialisé correctement)

initialisez les liaisons aux données:

sélectionnez DataBand1, et initialisez DataView avec DataView1sélectionnez DataBand2, et initialisez DataView avec DataView2

initialisez la relation maître détail:

sélectionnez DataBand2initialisez MasterDataView à DataView1sélectionnez MasterKey. L'Editeur "Data Text Editor" est affiché, et dans "Data Field",sélectionnez "CustNo" et cliquez "Insert Field"sélectionnez DetailKey" et dans l'Editeur, sélectionnez "Custno", cliquez "Insert Field"

voici la vue de l'Inspecteur:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

23 of 36 02/02/2014 13:44

Page 24: jColibri- Rave Report Tutorial

Notez que

l'Inspecteur affiche en gras les propriétés que nous avons modifiées, ce qui est très pratiqueMasterKey et DetailKey sont toutes deux égales à CustNo, parce qu'il se trouve que les Tables ontles mêmes noms de champs: CUSTOMER.CUSTNO et ORDERS.CUSTNO. Et dans RaveDesigner, il s'agit donc de DataView1.CustNo et DataView2.Custno, les DataView utilisées étantaffichées dans l'Editeur de données

Finalement, peuplez les bandessur Band1, placez, par exemple, les Text "Numéro" et "Société" et une ligne horizontale

sur DataBand1, CustNo et Company, tirés de DataView1sur DataBand2, OrderNo, Custno, AmountPaid, tirés de DataView2, et AmountPaid aligné parFontJustify à droitesur Data2, un CalcText (Controller= DataBand2, DataField= DataView2.AmountPaid) avec untitre et une ligne horizontalevoici notre maquette:

sélectionnez "File | Execute Report"voici la première page:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

24 of 36 02/02/2014 13:44

Page 25: jColibri- Rave Report Tutorial

3.7 - Chaînage de pages

Notre Report1 comporte donc deux pages. Pour notre exemple précédent, nous avons forcé Page2 à êtrela seule page affichée. Nous pouvons à présent réintégrer Page1, en utilisant Report1.PageList et enajoutant Page1

3.8 - Sélection d'états

Si notre RaveProject comporte plusieurs états, nous pouvons les sélectionner dans notre applicationDelphi par RvProject.SelectReport.

Ajoutons par exemple un autre étatsélectionnez "File | New Report"

Report2 est ajouté au TreeViewplacez quelques éléments sur Report2.Page1, par exemple un Text "Rapport 2"

sauvegardez par "File | Save"

Pour sélectionner l'état qui sera affiché par notre projet Delphi, nous utilisons tRvProject.SelectReport.Nous pouvons un peu automatiser le choix en utilisant une tListBox pour sélectionner le rapport:

sélectionnez le projet Delphiposez une tListBox sur la Forme, et

initialisez Items avec "Report1" et "Report2"créez sa méthode Click, et imprimez le rapport sélectionné:

procedure TForm1.ListBox1Click(Sender: TObject);beginwith RvProject1, ListBox1 dobeginOpen;SelectReport(Items[ItemIndex], False);Execute;

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

25 of 36 02/02/2014 13:44

Page 26: jColibri- Rave Report Tutorial

Close;end; // with RvProject1

end; // ListBox1Click

compilez, exécutez et sélectionnez "Report2" dans la tListBoxle second état est affiché

Notez que

normalement nous donnons des Name significatifs à tous les éléments de RaveReport. Au lieu deReport2, nous pourrions nommer l'état "Stocks 2007". C'est ce Report.Name qui doit être utilisédans tRvProject.SelectReportla structure d'un RaveProject (le contenu du .RAV) peut donc être schématisée par:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

26 of 36 02/02/2014 13:44

Page 27: jColibri- Rave Report Tutorial

4 - Rave Designer autonome

4.1 - Affichage de Tables dans Rave Designer

Nous pouvons aussi importer les données directement dans Rave Designer (sans placer de DataSet surune application Delphi).

Démarrons donc Rave Designer indépendemment de Delphi:fermez Rave Designer et Delphi 2006depuis le menu "Démarrer" de Windows, sélectionnez "Démarrer | Programmes | Rave Report 6.5BE | Rave Reports"

Rave Designer est affiché

sélectionnez "File | Save As" et tapez un nom de fichier, par exemple "rave_autonomous_designer"

Importons des donnée de la table DBDEMOS.CLIENTS.DBF:sélectionnez "File | New Data Object | Database Connection" et cliquez "Next"un dialogue de sélection de composant d'accès est affiché:

sélectionnez "BDE" (ou toute autre connexion qui vous ferait plaisir) et cliquez "Finish"un dialogue de paramétrage de la connexion est affiché:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

27 of 36 02/02/2014 13:44

Page 28: jColibri- Rave Report Tutorial

cliquez "Ok"

dans le TreeView, "Data View Dictionary" comporte une nouvelle entrée "Database1"

Nous ajoutons une DataView correspondant à une Table de la base:sélectionnez "File | New Data Object | Driver Data View"un dialogue nous demande de préciser la base de donnée:

cliquez "Finish"un Editeur de Requêtes est présenté, avec les Tables disponibles:

sélectionnez à droite "CLIENTS.DBF" et tirez-la sur la surface à gauche:un diagramme représentant la Table et ses champs est affichée.

Au lieu de * nous pouvons cocher tel ou tel champ. Le résultat va générer une requête

affichez la requête SQL en cliquant le bouton "Editor"le texte de cette requête est affiché:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

28 of 36 02/02/2014 13:44

Page 29: jColibri- Rave Report Tutorial

modifiez éventuellement la requête et cliquez "Ok"dans le TreeView, "Data View Dictionary" comporte une nouvelle entrée "DriverDataView1" avectous les champs de notre Table

A partir de là vous savez déjà faire:posez une Region sur Report1.Page1 au centreposez une DataBand, et

initialisez DataView à DriverDataView1par Ctrl Click gauche, tirez quelques champs sur DataBand1

sélectionnez "File | Execute Report"voici le résultat:

sélectionnez "File | Save"

4.2 - Affichage d'un état autonome dans Delphi

Bien que nous ayons créé l'état sans Delphi, nous pouvons néanmoins lancer l'impression depuis unprojet Delphi. Il suffit de spécifier le nom du .RAV, ET d'importer la .DLL qui sait exécuter ces étatsautonomes. Dans notre cas, il s'agit de RvDlBDE

Par conséquentlancez Delphi 2006créez un nouveau projet Win32, et nommez-le p_04_rave_autonomousposez un tRvProject sur la Forme, et initialisez ProjectFile avec"rave_autonomous_designer.RAV"posez un tButton qui exécute RvReport1 (voyez ci-dessus)

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

29 of 36 02/02/2014 13:44

Page 30: jColibri- Rave Report Tutorial

juste après IMPLEMENTATION, ajoutez

Uses RvDlBDE;

compilez, exécutezle même état que précédemment est affiché

Notez que

si vous utilisez une autre base que le BDE, le nom de l'UNITé d'importation sera différent dunôtre. Ce n'est pas grave: en exécutant, un dialogue d'erreur vous présentera exactement le nomque vous devez taper. Si votre répertoire "Program Files.Borland.BDS4" ne contient pas ce .DCU,voyez le site de Nevronasi vous rencontrez une erreur du style "unable to gain control of Rave Reports", fermez touteexécution de Rave Reports et recommencez

5 - Création d'états par Code

5.1 - Impression par Programmation Delphi

Nous nous sommes surtout penchés sur l'impression de tables provenant de bases de données.

Mais nous pouvons aussi imprimer des données uniquement par des appels depuis un projet Delphi deprimitives Rave Reports.

Pour cela

nous utilisons le composant tRvSystemnous plaçons dans tRvSystem.OnPrint des instructions similaires à celles utilisées par tCanvas:GoToXY, SetFont, Print NewLine etcnous lançons l'impression par tRvSystem.Execute

Impression d'un texte

Voici un exemple qui va imprimer un simple texte:lancez Delphi 2006créez un nouveau projet Win32, et nommez-le p_05_rave_code_reportde l'onglet "Rave" de la Tools Palette, sélectionnez un tRvSystem

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

30 of 36 02/02/2014 13:44

Page 31: jColibri- Rave Report Tutorial

créez l'événement RvSystem1.OnPrint, et tapez le code suivant:

procedure TForm1.RvSystem1Print(Sender: TObject);begin

with Sender as TBaseReport dobeginSetFont('Arial', 18);GotoXY(1,1);Print('Rave Code Based Reporting');

end; // with Sender as TBaseReportend; // RvSystem1Print

posez un tButton, nommez-le "preview_" et, dans son OnClick, lancez l'impression:

procedure TForm1.RvSystem1Print(Sender: TObject);begin

with Sender as TBaseReport dobeginSetFont('Arial', 18);GotoXY(1,1);Print('Rave Code Based Reporting');

end; // with Sender as TBaseReportend; // RvSystem1Print

compilez, exécutez, cliquez "preview_"voici le résultat:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

31 of 36 02/02/2014 13:44

Page 32: jColibri- Rave Report Tutorial

5.2 - Une tableau tabulé

Terminons par un exemple un peu plus significatif. Nous allons imprimer un tableau en présentant lesdonnées en colonnes. Pour cela

nous initialisons les taquets de tabulation par ClearTabs et SetTabnous imprimons chaque ligne en appelant PrintTab autant qu'il y a de taquets

Voici un exemple simpleajoutez une méthode qui initialise les taquets et imprime quelques lignes. Nous avons choisid'imprimer chaque ligne dans une procédure emboîtée print_training:

procedure print_tabulated_report(p_c_base_report: TBaseReport);

procedure print_training(p_training_name: String;p_day_count: Integer; p_price: Double);

beginwith Form1, p_c_base_report dobegin

PrintTab(p_training_name);PrintTab(IntToStr(p_day_count));PrintTab(Format('%m', [p_price]));NewLine;

end; // with p_c_base_report doend; // print_training

begin // print_tabulated_reportwith Form1, p_c_base_report dobegin// -- page headerSetFont('Arial', 18);GotoXY(1,1);Print('Formations Delphi');NewLine; NewLine;

// -- set the tabsClearTabs;SetTab(0.2, pjLeft, 1.7, 0, 0, 0);SetTab(1.0, pjRight, 1.5, 0, 0, 0);SetTab(1.9, pjRight, 1.7, 0, 0, 0);

// -- column titleSetFont('Arial', 10);Bold := True;PrintTab('Formation');PrintTab('Jours');PrintTab('Prix');NewLine;

// -- the detailsBold := False;NewLine;

// -- print each tabulated lineprint_training('Formation Rave Report', 3, 1400);print_training('Formation Delphi Complète', 5, 2400);print_training('Formation IntraWeb', 3, 1400);print_training('Formation Interbase C/S', 3, 1400);

end; // with p_c_base_report doend; // print_tabulated_report

comme toutes les impression sont effectuées dans le callback RvSystem1.OnPrint (appelée après ledialogue de choix de sortie), il faut ventiler les différents types d'états à imprimer. Nous avonschoisi d'utiliser une variable globale, initialisée dans chaque bouton d'impression. Voici le code:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

32 of 36 02/02/2014 13:44

Page 33: jColibri- Rave Report Tutorial

var g_report_kind: Integer= 0;

procedure TForm1.RvSystem1Print(Sender: TObject);begincase g_report_kind of

1 : print_title(Sender as TBaseReport); 2 : print_tabulated_report(Sender as TBaseReport);

end; // RvSystem1Printend; // RvSystem1Print

procedure TForm1.preview_Click(Sender: TObject);beging_report_kind:= 1;RvSystem1.Execute;

end; // preview_Click

procedure TForm1.preview_trainings_Click(Sender: TObject);beging_report_kind:= 2;RvSystem1.Execute;

end; // preview_trainings_Click

compilez, exécutez, cliquez "preview_trainings_"voici le résultat:

6 - Remarques sur Rave Reports

Quelques commentaires

Rave Reports est globalement très satisfaisant. La séparation de Rave Designer et de l'IDE Delphiest une bonne option, et elle permet de fournir à nos utilisateurs un outil de reporting indépendant.Outil à double tranchant pour certains développeurs, qui préfèrent facturer chaque modificationplutôt que de laisser le client créer ses propres états, alors que d'autres ne sont que trop heureux deles laisser transpirer un peu avec leurs lubies de modifications permanentes. A vous de choisir ...

l'aide de Rave Reports dans Delphi est assez, hmm, surprenante. Une liste de CLASSES (sansleurs attributs, méthodes, événements), une liste séparée de toutes les PROPERTYes, une liste deméthode et une liste d'événements:

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

33 of 36 02/02/2014 13:44

Page 34: jColibri- Rave Report Tutorial

Et nous qui croyions que nous étions en programmation objet ?

D'ailleurs cette aide n'apparaît pas par appui de F1 sur un composant Rave Reports (il fautl'installer dans la mécanique d'aide, ou ouvrir l'aide et naviguer sur le sujet qui nous intéresse)

nombreux sont les gourous qui terrorisent les personnes habituées à Quick Report en avertissantque "RAVE est totalement différent". Que nenni: c'est un générateur à bande, avec en plus, undesigner autonome, et la possibilité d'effectuer ses impressions par code.

Ce qui est difficile, en revanche, c'est de présenter simplement la construction du premier état, caril y a 9 parties séparées:

Delphi (avec la Palette, l'Inspecteur d'Objet, la Forme et l'UNITé)Rave Designer (avec le Menu, le Treeview, l'Inspecteur, la Palette et la surface de dessin)

Donc un peu plus délicat de présenter où cliquer pour obtenir ce que l'on souhaite. Mais çà c'estnotre problème de présentateur, et si nous avons correctement fait notre travail, vous ne devriezpas (trop) vous en rendre compte.

dans Rave Designer, le fait que certains éléments soient ajoutés via le menu (les DataViews parexemple) et que d'autre le soient par la Palette (les Regions, les Bandes) peut aussi dérouter audépart. De plus le TreeView pourrait comporter un menu contextuel (click droit et "AddDataview" etc). Une critique mineure, en réalité

7 - Télécharger le code source Delphi

Vous pouvez télécharger:

01_rave_bde.zip : création du premier état avec une Table BDE (7 K)02_rave_interbase.zip : création d'un état avec une Table Interbase (7 K)03_rave_subtotal.zip : utilisation de bandes de titre et de sous-totaux (19 K)04_rave_autonomous.zip : un état ave Rave Designer seul, utilisable par un projet Delphi (7 K)05_rave_code_report.zip : écriture d'états par code Delphi (6 K)

Ce .ZIP qui comprend:

le .DPR, la forme principale, les formes annexes eventuellesles fichiers de paramètres (le schéma et le batch de création)dans chaque .ZIP, toutes les librairies nécessaires à chaque projet (chaque .ZIP est autonaume)

Ces .ZIP, pour les projets en Delphi 6, contiennent des chemins RELATIFS. Par conséquent:

créez un répertoire n'importe où sur votre machineplacez le .ZIP dans ce répertoiredézippez et les sous-répertoires nécessaires seront crééscompilez et exécutez

Ces .ZIP ne modifient pas votre PC (pas de changement de la Base de Registre, de DLL ou autre). Poursupprimer le projet, effacez le répertoire.

La notation utilisée est la notation alsacienne qui consiste à préfixer les identificateurs par la zone de

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

34 of 36 02/02/2014 13:44

Page 35: jColibri- Rave Report Tutorial

compilation: K_onstant, T_ype, G_lobal, L_ocal, P_arametre, F_unction, C_lasse. Elle est présentéeplus en détail dans l'article La Notation Alsacienne

Comme d'habitude:

nous vous remercions de nous signaler toute erreur, inexactitude ou problème detéléchargement en envoyant un e-mail à [email protected]. Les corrections qui en résulterontpourront aider les prochains lecteurstous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentionsd'autres sources sur le même sujet seront de même les bienvenus à [email protected] simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour uneréponse) vos commentaires ci-dessus et nous les envoyer en cliquant "envoyer" :

Nom :E-mail :Commentaires * :

et si vous avez apprécié cet article, faites connaître notre site, ajoutez un lien dans vos listes deliens ou citez-nous dans vos blogs ou réponses sur les messageries. C'est très simple: plus nousaurons de visiteurs et de références Google, plus nous écrirons d'articles.

8 - Références

Quelques références:

Nevrona est la société qui produit Rave Report. Vous y trouverez les mises à jour, les .DLL, lesnouvelles versionsRave, .PDF, Intraweb : un article où nous présentons

comment générer, depuis une applications Delphi, des états au format .PDFla lecture et la génération de fichiers .PDF depuis des pages Web créées avec Intraweb

Vidéo Rave Report : le fichier .SWF (55 minutes) de la conférence CodeGear d'octobre 2008(architecture, utilisation de section, titres et totaux / sous totaux, relations maître détail et créationd'états)

Nous présentons aussi Rave Reports dans nos formations:

formation bases de données utilisant le BDEFormation base de données Client Serveur utilisant Interbase (ou Oracle, Sql Server, MySql)Formation Delphi Complète qui en 5 jours présente les techniques Delphi de baseFormation Delphi 2006 .Net où le développement avec la plateforme .Net est présenté

Et finalement, pour ceux qui souhaitent se concentrer sur Rave, nous proposons une

Formation Rave Report de deux jours, soit dans nos locaux, soit sur votre site.

Nos exemples mentionnent Intraweb. Pour les personnes intéressées, nous avons rédigé un TutorialIntraweb et présentons ce produit Delphi dans nos formations abordant les techniques Internet / Web

9 - L'auteur

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

35 of 36 02/02/2014 13:44

Page 36: jColibri- Rave Report Tutorial

John COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il aécrit de nombreux livres et articles, et partage son temps entre le développement de projets (nouveauxprojets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le conseil(composants, architecture, test) et la formation. Son site contient des articles avec code source, ainsique le programme et le calendrier des stages de formation Delphi, base de données, programmationobjet, Services Web, Tcp/Ip et UML qu'il anime personellement tous les mois, à Paris, en province ousur site client.

Créé: may-07. Maj: fév-13. 148 articles, 379 sources .ZIP, 2.021 figuresContact : John COLIBRI - Tel: 01.42.83.69.36 / 06.87.88.23.91 - email:[email protected]

Copyright © J.Colibri http://www.jcolibri.com - 2001 - 2013Retour: Home Articles Formations Développement Delphi Livres Pascalissime Liens Download

jColibri- Rave Report Tutorial http://www.jcolibri.com/articles/bdd/rave_report_tutorial/rave_report_...

36 of 36 02/02/2014 13:44