FAQ DelphiConsultez toutes les FAQ

Nombre d'auteurs : 123, nombre de questions : 920, dernière mise à jour : 8 novembre 2019  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.

Commentez


SommaireGénérateurs d'étatsRave Report (4)
précédent sommaire suivant
 

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;

Mis à jour le 24 janvier 2014 Rayek

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;
La fonction GetClauseOrderBy renvoie une chaîne vide ou une chaîne de type 'Order By NomDeChamp'.

Mis à jour le 24 janvier 2014 Laurent Dardenne

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');
N.B. : Ayant testé les 3 composants, je vous suggère de vous restreindre à la génération de l'état au format PDF si vous avez des images, des tableaux,etc. dans votre état; les autres formats affichant des résultats quelque peu bogués avec par exemple des tabulations aléatoires, des images qui ne sont pas affichées etc.

Mis à jour le 24 janvier 2014 Rayek

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';
Enfin il reste à modifier le chemin d'accès de la base de données :
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;

Mis à jour le 24 janvier 2014 Laurent Dardenne

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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 © 2019 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.