Aller au contenu

Fonctions et procédures

Dans ReportBuilder, nous avons accès à des fonctions et procédures qui permettent de manipuler les données et qui sont découpées en plusieurs catégories  :

  • Les fonctions de chaînes de caractères qui ne travaillent que sur des chaînes de caractères
  • Les fonctions de conversion qui permettent de changer le type de données
  • Les fonctions de formatage qui permettent de mettre en forme les données
  • Les fonctions de dates qui ne travaillent qu'avec les dates
  • Les fonctions mathématiques qui permettent de faire des calculs
  • Les fonctions utilitaires
  • Les fonctions Gestimum

Fonctions de chaînes de caractères

Nom Déclaration Description Exemple Résultat
Capitalize function Capitalize(const S: String): String; Met en majuscule la 1ère lettre de la chaîne Value := Capitalize('rambouillet'); Rambouillet
CompareText function CompareText(const S1, S2: string): Integer; Compare deux chaînes par valeur ordinale sans sensibilité à la casse. CompareText compare S1 et S2 et renvoie 0 s'ils sont égaux. Si S1 est supérieur à S2, CompareText renvoie un entier supérieur à 0. Si S1 est inférieur à S2, CompareText renvoie un entier inférieur à 0. a = CompareText('rambouillet', 'rambouillet');
b = CompareText('versaille', 'rambouillet');
c = CompareText('rambouillet', 'versaille');
a = 0
b = 1
c = -1
Copy function Copy(S: String; Index, Count: Integer): String; Renvoie une sous-chaîne d'une chaîne.
S est une expression de type chaîne.
Index et Count sont des expressions de type entier.
Copy renvoie une sous-chaîne contenant Count caractères en partant de l' Index.
Si Index est supérieur à la longueur de S, Copy renvoie une chaîne  vide.
Si Count spécifie plus de caractères que ceux disponibles, seuls les caractères compris entre S[Index] et la fin de S sont renvoyés.
Copy('rambouillet', 1, 4); ramb
Delete procedure Delete(var S: String; Index, Count: Integer); Supprime des caractères dans une chaîne.
S est une expression de type chaîne.
Index et Count sont des expressions de type entier.
Delete supprime une sous-chaîne contenant Count caractères en partant de l'Index.
Si Index est supérieur à la longueur de S, Delete ne supprimera aucun caractère.
Si Count spécifie plus de caractères que ceux disponibles à partir de l'Index, le reste de la chaîne sera supprimés.
Si Count est inférieur ou égal à zéro, aucun caractère ne sera supprimé.
var
S: string;
begin
S := 'rambouillet';
Delete(S, 3, 2);
end;
raouillet
Insert procedure Insert(Source: String; var S: String; Index: Integer); Insert une sous-chaîne dans une chaîne au début d'une position spécifique var
ChaineDestination: string;
begin
ChaineDestination := ' rambouillet';
Insert('78120', ChaineDestination, 1);
end;
78120 rambouillet
Length function Length(S: String): Integer; Renvoie le nombre de caractère de la chaîne passée en paramètre. Value := Length('rambouillet'); 16 caractères
LowerCase function LowerCase(const S: String): String; Renvoie une chaîne de caractère en minuscule Value := 'RAMBOUILLET'; rambouillet
Pos function Pos(Substr: String; S: String): Integer; Retourne la position de la première occurrence de la sous-chaîne Substr dans la chaîne S Value := Pos('b','rambouillet'); 4
ShowMessage procedure ShowMessage(const Msg: string); Affiche un message lors de l'exécution
UpperCase function UpperCase(const S: String): String; Met une chaîne de caractère en majuscule Value := 'rambouillet'; RAMBOUILLET

Fonctions de conversion

Nom Déclaration Description
CurrToStr function CurrToStr(Value: Currency): String; Transforme une valeur monétaire en chaîne
DateTimeToStr function DateTimeToStr(aDateTime: DateTime): String; Transforme une date et une heure en chaîne
DateToStr function DateToStr(aDate: Date): String; Transforme une date en chaîne
FloatToStr function FloatToStr(Value: Extended): String; Transforme un chiffre à virgule en chaîne
IntToStr function IntToStr(Value: Integer): String; Transforme un entier en chaîne
StrToCurr function StrToCurr(const S: String): Currency; Transforme une chaîne en valeur monétaire
StrToDate function StrToDate(const S: String): Date; Transforme une chaîne en date
StrToDateTime function StrToDateTime(const S: String): DateTime; Transforme une chaîne en date et heure
StrToFloat function StrToFloat(const S: String): Extended; Transforme une chaîne en nombre à virgule
StrToIntDef function StrToIntDef(const S: String; Default: Integer): Integer; Transforme une chaîne en entier avec renvoi de Default en cas d'erreur
StrToInt function StrToInt(const S: String): Integer; Transforme une chaîne en entier
StrToTime function StrToTime(const S: String): Time; Transforme une chaîne en heure
TimeToStr function TimeToStr(aTime: Time): String; Transforme une heure en chaîne

Fonctions de formatage

Nom Déclaration Description Exemple Résultat
FormatCurr function FormatCurr(const Format: String; Value: Currency): String; Renvoie un chiffre formaté sous forme de chaîne Value := FormatCurr('#,##0.0 $', 1234.567) 1 234.6 €
FormatDateTime function FormatDateTime(const Format: String; aDateTime: DateTime): String; Renvoie une date formatée sous forme de chaîne var maDate: TDateTime;
begin
maDate := StrToDateTime('17/05/2018 15:41');
Value := FormatDateTime('dddd dd mmmm yyyy hh:mm', maDate);
jeudi 17 mai 2018 15:41
FormatFloat function FormatFloat(const Format: String; Value: Extended): String; Renvoie un chiffre formaté sous forme de chaîne Value := FormatFloat('#,##0', 1234.567) 1 235
FormatMaskText function FormatMaskText(const EditMask: String; const Value: String): String; Formate une chaîne avec un masque d'édition Value := FormatMaskText('00.00.00.00.00;0;*', '0134840984') 01.34.84.09.84
FormatString FormatString(const EditMask: String; const Value: String): String; Formate une chaîne avec un masque d'édition Value := FormatMaskText('00.00.00.00.00;0;*', '0134840984') 01.34.84.09.84

Fonctions de dates

Nom Déclaration Description Exemple Résultat
CurrentDate function CurrentDate: Date; Retourne la date courante var
DateDuJour: TDate;
begin
DateDuJour := CurrentDate;
end;
17/05/2018
CurrentDateTime function CurrentDateTime: DateTime; Retourne la date et l'heure courante var
DateDuJour: TDateTime;
begin
DateDuJour := CurrentDateTime;
end;
17/05/2018 14:49:50
CurrentTime function CurrentTime: DateTime; Retourne l'heure courante var
HeureDuJour: Time;
begin
HeureDuJour := CurrentTime;
end;
14:49:50
DayOfWeek function DayOfWeek(aDate: DateTime): Integer; Retourne le jour de la semaine en fonction de l'index suivant : var
maDate: TDateTime
begin
maDate := StrToDateTime('17/05/2018 15:41');
Value := DayOfWeek(maDate));
end;
5
DecodeDate procedure DecodeDate(aDate: DateTime; var Year, Month, Day: Integer); Renvoie les différentes parties d'une date sous forme d'entier var
maDate: TDateTime
Jour: Integer;
Mois: Integer;
Annee: Integer;
begin
maDate := StrToDateTime('17/05/2018');
DecodeDate(maDate, Annee, Mois, Jour);
end;
2018
05
17
DecodeTime procedure DecodeTime(aTime: DateTime; var Hour, Min, Sec, MSec: Integer); Renvoie les différentes parties d'une heure sous forme d'entier var
monHeure: Time;
Heure: Integer;
Minute: Integer;
Seconde: Integer;
MilliSeconde: Integer;
begin
monHeure := StrToTime('14:53:48:02');
DecodeTime(monHeure, Heure, Minute, Seconde, MilliSeconde);
end;
14
53
48
2
EncodeDate function EncodeDate(Year, Month, Day: Integer): DateTime; Transforme des entiers en date var
maDate: TDateTime
Jour: Integer;
Mois: Integer;
Annee: Integer;
begin
Jour := 17;
Mois := 5;
Annee := 2018;
maDate := EncodeDate(Annee, Mois, Jour);
end;
17/05/2018
EncodeTime function EncodeTime(Hour, Min, Sec, MSec: Integer): DateTime; Transforme des entiers en heure var
monHeure: Time;
Heure: Integer;
Minute: Integer;
Seconde: Integer;
MilliSeconde: Integer;
begin
Heure := 11;
Minute := 45;
Seconde := 12;
MilliSeconde := 0;
monHeure := EncodeTime(Heure, Minute, Seconde, MilliSeconde);
end;
11:45:12.0000

Fonctions mathématiques

Nom Déclaration Description
ArcTan function ArcTan(X: Extended): Extended; Donne la valeur en radians de l'arc tangent d'un nombre
Cos function Cos(X: Extended): Extended; Calcule le cosinus d'un angle
Cosh function Cosh(X: Extended): Extended; Calcule le cosinus hyperbolique d'un angle
Cotan function Cotan(X: Extended): Extended; Calcule la cotangente d'un angle.
Exp function Exp(X: Extended): Extended; Renvoie l'exponentielle de X.
Frac function Frac(X: Extended): Extended; Renvoie la partie fractionnaire d'un nombre réel.
Int function Int(X: Extended): Extended; Renvoie la partie entière d'un nombre réel
IntPower function IntPower(Base: Extended; Exponent: Integer): Extended; Calcule la puissance intégrale d'une valeur de base.
Ln function Ln(X: Extended): Extended; Renvoie le logarithme naturel d'une expression réelle.
Power function Power(Base, Exponent: Extended): Extended; Élève Base à n'importe quelle puissance d'Exponent.
Round function Round(X: Extended): Integer; Renvoie la valeur de X arrondie au nombre entier le plus proche
Sin function Sin(X: Extended): Extended; Renvoie le sinus de l'angle en radians.
Sqr function Sqr(X: Extended): Extended; Renvoie le carré d'un nombre.
Sqrt function Sqrt(X: Extended): Extended; Renvoie la racine carrée de X.
Tan function Tan(X: Extended): Extended; Renvoie la tangente de X, exprimée en radians
Tanh function Tanh(X: Extended): Extended; Calcule la tangente hyperbolique de X
Trunc function Trunc(X: Extended): Integer; Tronque un nombre réel en entier

Fonctions utilitaires

Nom Déclaration Description
MessageBeep procedure MessageBeep; Déclenche un son sur le PC
ShowMessage procedure ShowMessage(const Msg: string); Affiche un message

Fonctions Gestimum

Voici le tableau demandé avec 3 colonnes, en mettant le contenu de la colonne 2 entre les balises `` :

Nom Déclaration Description
AlignGroupFooter procedure AlignGroupFooter(AGroupFooter: TppGroupFooterBand); Permet d'aligner horizontalement la bande du bas (Footer) par rapport aux bandes du modèles
AlignGroupFooterOn procedure AlignGroupFooterOn(AGroupFooter: TppGroupFooterBand; ABeforeGroupFooter: TppGroupFooterBand); Permet d'aligner horizontalement la bande du bas (Footer) par rapport à une autre bande bas, par exemple celle d'un groupe
CalculerTVAPied procedure CalculerTVAPied(const ANumeroDocument: string; AListeMontantsHT, AListeTauxTVA, AListeMontantsTVA: TStringList; const AFormatMontants, AFormatTaux: string); Permet de récupérer le tableau de TVA qui est dans l'onglet pied du document
CanShowTableReference function CanShowTableReference(const AID: string): Boolean; Permet de savoir si on peut voir des lignes des tables de référence en fonction de leurs ID
ContainsText function ContainsText(const AText, ASubText: string): Boolean; Permet du savoir si un chaîne contient une autre chaîne
CreateDrawLine function CreateDrawLine(AReport: TppReport; const ATop: Integer): TppDrawLine; Créer un objet ligne
CreateDrawShape function CreateDrawLine(AReport: TppReport): TppDrawLine; Créer une objet forme
CreateGroup function CreateGroup(AReport: TppReport; ADataPipeline: TppDataPipeline; const ABreakName: string): TppGroup; Créer un groupe
CreateSubReport function CreateSubReport(const ASubReportFileName: string; AReport: TppReport; ABand: TppBand): TppSubReport; Créer un sous-rapport
FileExists function FileExists(const AFileName: string): Boolean; Permet de vérifier l'existence d'un fichier
GetApplicationTitle function GetApplicationTitle: string; Renvoie le titre de l'application
GetDefaultPageFooterTemplate function GetDefaultPageFooterTemplate: string; Renvoie le rapport à utiliser par défaut pour présenter le pied de page
GetDefaultPageHeaderTemplate function GetDefaultPageHeaderTemplate: string; Renvoie le rapport à utiliser par défaut pour présenter l'entête de page
GetDefaultTitleTemplate function GetDefaultTitleTemplate: string; Renvoie le rapport à utiliser par défaut pour présenter le titre
GetEcheancesAnterieures procedure GetEcheancesAnterieures(const ANumeroDocument, ASousTypeDocument: string; AListeEcheancesAnterieures: TStringList; const AFormatMontant: string); Permet de récupérer les échéances qui ont été générées sur les documents antérieurs au document actuel
GetFieldDisplayValue function GetFieldDisplayValue(const ATableName, AFieldName, AFieldValue: string): string; Renvoie la description d'une des valeurs possibles d'un champ
GetReportsFolderPath function GetReportsFolderPath: string; Renvoie le chemin du dossier de stockage des modèles d'impression
GetTableReferenceDescription function GetTableReferenceDescription(const AID: string): string; Renvoie la description d'une table de la base de données
InpuBox function InpuBox(const ACaption, APrompt, ADefault: string): string; Affiche un fenêtre permettant de récupérer de éléments saisis par l'utilisateur
LeftStr function LeftStr(const AText: string; const ACount: Integer): string; Renvoie la partie gauche d'une chaîne
LoadSubReport function LoadSubReport(ASubReport: TppSubReport; const AFileName: string): Boolean; Permet de charger le contenu d'un sous-rapport
RightStr function RightStr(const AText: string; const ACount: Integer): string; Renvoie la partie droite d'une chaîne
SelectFromTableAsInteger function SelectFromTableAsInteger(const AFieldName, ATableName, AWhere: string): Integer; Renvoie sous forme d'entier le résultat d'une requête de sélection dans la base de données
SelectFromTableAsString function SelectFromTableAsString(const AFieldName, ATableName, AWhere: string): string; Renvoie sous forme de chaîne le résultat d'une requête de sélection dans la base de données
StartsText function StartsText(const AText, ASubText: string): Boolean; Test si une chaîne commence par une chaîne donnée
UpdateTable function UpdateTable(const AScript: string): Integer; Permet l'exécution de n'importe quel script SQL
UpperCaseFirst function UpperCaseFirst(const S: string): string; Renvoie une chaîne avec la première lettre en majuscule
VarToBool function VarToBool(const AValue: Variant): Boolean; Renvoie un boolean avec la valeur False quand le paramètre de la fonction est à null
VarToCurr function VarToCurr(const AValue: Variant): Currency; Renvoie un chiffre à zéro quand le paramètre de la fonction est à null
VarToDate function VarToDate(const AValue: Variant): TDate; Renvoie une date à zéro quand le paramètre de la fonction est à null
VarToDateTime function VarToDateTime(const AValue: Variant): TDateTime; Renvoie une date et une heure à zéro quand le paramètre de la fonction est à null
VarToFloat function VarToFloat(const AValue: Variant): Double; Renvoie un double à zéro quand le paramètre de la fonction est à null
VarToInt function VarToInt(const AValue: Variant): Integer; Renvoie un entier zéro quand le paramètre de la fonction est à null
VarToStr function VarToStr(const AValue: Variant): string; Renvoie une chaîne vide quand le paramètre de la fonction est à null

Fonctions et procédures personnelles

ReportBuilder permet de se créer ses propres fonctions et procédures dans un modèle. Cela permet par exemple d'alléger du code ou d'éviter de répéter du code.

Pour créer une fonction ou une procédure, il faut passer l'affichage sur Module et sélectionner Programmes.

Ensuite, on fait un clic-droit dans la zone blanche sur la droite pour avoir accès au menu de création d'une fonction ou d'une procédure.

  • Nouvelle fonction

  • Nouvelle procédure

Il faut ensuite modifier la zone de déclaration de la fonction ou de la procédure dans le cadre en bas. On pourra indiquer le nom de la fonction ou de la procédure ainsi que le nom de chaque paramètre et leur type. Dans le cas d'une fonction, il faut indiquer le type de données qu'elle doit retourner.

La liste des fonction et procédure vient alors s'enrichir .

Une fois la déclaration effectuée, il faut définir le contenu en restant bien dans la zone begin...end.

La fonction ci-dessous retournera le 2e paramètre si celui-ci est plus grand le 1er paramètre sinon elle retourne le 1er paramètre.

function MaFonction(const AParametre1, AParametre2: string): string;


begin


  if AParametre1 < AParametre2 then


    Result := AParametre2


  else


    Result := AParametre1;


end;

La procédure ci-dessous affiche un message avec la 2e paramètre si celui-ci est plus grand le 1er paramètre sinon elle affiche le 1er paramètre.

procedure MaProcedure(const AParametre1, AParametre2: string);


begin


  if AParametre1 < AParametre2 then


    ShowMessage(AParametre2)


  else


    ShowMessage(AParametre1);


end;