FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 934, dernière mise à jour : 23 octobre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
Pour passer un paramètre à un état, il faut au préalable définir le paramètre dans l'état. Pour ce faire il faut sélectionner dans l'état :
- RaveProjet : si l'on veut que la variable soit globale à tous les états
- L'état : si l'on veut que la variable ne soit que pour cet état.
C'est dans la propriété parameters qu'il faut insérer le paramètre (MONPARAMDATE pour l'exemple).
Après il ne vous reste plus qu'à utiliser un DataText et de définir son DataField avec ce paramètre (Cela fonctionne aussi avec d'autres composants mais il faut être prudent au niveau des types de données transmises).
Dans delphi, nous utiliserons la procédure SetParam de l'objet RvProject pour lui affecter une valeur.
Dans l'exemple ci-dessous, nous créons un paramètre MONPARAMDATE et nous lui affectons la valeur 24/03/2006 :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 | With RvProject1 do try Open; SetParam('MONPARAMDATE','24/03/2006'); finally Close; end; |
Dans certaines situations, un rapport peut dépendre d'une requête créée dynamiquement, par exemple une clause Order By. On aimerait donc, dans ce cas, pouvoir modifier l'instruction SQL avant l'appel de l'exécution du rapport :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | procedure TFrmAffaire.btnImprimerRapportClick(Sender: TObject); const cstRVddvAffaires = MonDriverDataView; cstRVAffaires = RapportAffaire; var MonDataView: TRaveDriverDataView; begin With FrmPrincipale.RvRapports do begin Open; // Commentaire pour l'application DelphiCodeToDoc /// @Comment Recherche un composant DriverDataView et modifie le SQL dynamiquement MonDataView:=ProjMan.FindRaveComponent(cstRVddvAffaires,nil) as TRaveDriverDataView; MonDataView.Query:='Select * From Matable Where [Etat] > 0 '+ GetClauseOrderBy(Self.Orderby); end; FrmPrincipale.ExecuteRapport(cstRVAffaires); end; |
En plus des composants nécessaires, il faut obligatoirement rajouter sur votre fiche, au moins, un des composants suivants (selon le format de sortie souhaité) :
- RvRenderPDF1 : Composant pour générer l'état au format PDF
- RvRenderHTML1 : Composant pour générer l'état au format HTML
- RvRenderRTF1 : Composant pour générer l'état au format RTF
Ci-dessous un exemple pour la génération d'un état en PDF :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | With RvSystem1 do begin // Indique que la destination de l'état sera un fichier DefaultDest := rdFile; // Empêche l'affichage de la boite de dialogue SystemSetups := SystemSetups - [ssAllowSetup]; // Indique que l'on veut imprimer un PDF; // pour les autres formats, il suffit de remplacer RvRenderPDF1 //par RvRenderHtml1 ou RvRenderRTF1 RenderObject := RvRenderPDF1; DoNativeOutput := false; // Il est nécessaire d'indiquer le chemin et le nom du fichier que l'on va générer OutputFileName := ExtractFilePath(Application.exeName) + 'MonFichierPdf.pdf'; end; // l'exécution de l'état est nécessaire si l'on veut que le fichier soit généré. RvProject1.ExecuteReport('Report1'); |
Il est parfois nécessaire de modifier la chaîne de connexion d'un composant TRaveDataBase.
Pour ce faire, on déclare dans la clause uses l'unité RvDatabase. Vous pouvez consultez les fichiers Borland\4.0\RaveReports\Lib\Rv*.hpp pour retrouver des noms de classe raveReport.
Ensuite on déclare les constantes suivantes :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 | /// Nom de la base ACCESS cstNomBase = 'MaBase.mdb'; /// Chaîne de connexion ADO à construire avec le nom de la base Access cstADOConnexion = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Mode=Share Deny None;Persist Security Info=False'; /// Nom du DataBase(RaveReport) comportant une chaîne de connexion à modifier dynamiquement cstRVdbMaBaseIO = 'BaseAccess'; |
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var maBase: TRaveDatabase; begin FNomBase:=cstNomBase; FApplicationPath:=ExtractFilePath(Application.ExeName); ... With RvRapports do begin Open; // Renseigne la chaîne de connexion du composant d'accès aux données des rapports d'impression MaBase:=ProjMan.FindRaveComponent(cstRVdbMaBaseIO,nil) as TRaveDataBase; // AuthRun est de type TRaveDBAuth MaBase.AuthRun.Datasource:= Format(cstADOConnexion,[NomDeBaseAccess]); end; |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.