Catégorie : Crystal report

Crystal report – Aligner sur un meme ligne sans avoir d’espace a cause de champs trop haut

Sans titre.png

Le 1 se mettait correctement et le 2 et 3  se mettais sur la ligne verte.

Rapport principale :

Sans titre

Sous rapport :

Sans titre.png

 

Faire un sous rapport pour les lignes qui doivent etre l’un en dessous de l’autre sans avoir d’espace.

Dans le rapport mettre l’adresse qui va se mettre sur plusieurs ligne.

Créer une variable partagé dans une formule init qui nous permetrra de zapper la premiere ligne.

Formule Init :

shared booleanvar premier_passe := false

Remplir une formule dans la fonction « supprimer » du sous rapport :

shared booleanvar premier_passe ;

if ( {Commande.creancier_numero} = previous({Commande.creancier_numero}) ) and premier_passe = true then
(
premier_passe := false;
true
)
else
(
premier_passe := true;
false
)

Créer un lien entre le rapport et le sous rapport si il ont la meme source de données:

Clique droit sur le sous rapport -> changer les liens

Puis dans la formule supprimer de l’adresse, ajout la formule suivante :

shared booleanvar premier_passe ;

if premier_passe = false then
(
true;
);

 

 

 

 

 

 

 

Publicités

Crystal report – Evenement sur bouton imprimer du crystalviewer

‘Permet de trouver le bouton qui à été cliquer dans le Crystal report viewer
‘ et de lui rajouter un événement
For Each Ctrl As Control In Me.CrystalReportViewer1.Controls
If TypeOf Ctrl Is ToolStrip Then
For Each Obj As Object In CType(Ctrl, ToolStrip).Items
If TypeOf Obj Is ToolStripButton Then
AddHandler CType(Obj, ToolStripButton).Click, AddressOf printButton_Click
End If
Next
End If
Next

Private Sub printButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)

End Sub

 

Crystal report – fusionner des lignes / champs afin de n’avoir qu’une ligne.

Une formule dans l’entête de groupe pour réinitialiser pour chaque enregistrement :

Whileprintingrecords;

global stringvar mCommentaire:= »

Deux formule dans le corps :

–          Une pour initaliser la variable :

 

whileprintingrecords;

 

global stringvar mCommentaire:=mCommentaire &

 

(if previous({DataTable1.mon_champs_numero})={DataTable1 mon_champs_numero } or     next({DataTable1. mon_champs_numero })={DataTable1. mon_champs_numero } then

{DataTable1.mon_champs_commentaire}& ‘,’

else

‘ ‘ );

 

mCommentaire

 

 

–          L’autre pour afficher uniquement une ligne (la dernière) :

 

whileprintingrecords;

if   next({DataTable1. mon_champs_numero })<> {DataTable1. mon_champs_numero } then

global stringvar mCommentaire;

Crystal report – Créer une balance / différence entre débit et crédit

Créer une formule avec une variable partagé dans l’entête du groupe :

shared numbervar mBalance := {DataTable1. montant _ancien_solde };

 

Calculer et afficher dans le corps du rapport :

 

shared numbervar mBalance ;

mBalance := mBalance + {@crédit} – {@débit} ;

if(mBalance<0) then

ToText(mBalance)

else

ToText(« + »& mBalance)

 

 

/!\ débit et credit ne doivent pas être a null pour que cela fonctionne. Exemple utiliser coalesce( « champ »,0) quand les données viennent d’une base de données postgreSQL

Crystal report – Divers

Vérifie si un champs contient un mot :

if InStr({DataTable1.champs}, ‘mot_rechercher’) > 0  then

 

Aligner un champs dans une formule à gauche ou à droite en fonction de la condition :

– Clique droit, mise en forme de l’objet

– Dans la formule X2 alignement :
if ( isnull({@debours_libelle}) )then
(
crLeftAligned;
)
else
(
crRightAligned;
);

Formater une date dans une formule :

ToText({maDate},« dd-MMM-yyyy ») ->  31-Jan-2010

ToText({maDate},"dd-MM-yyyy")-> 31-01-2010
ToText({maDate},"dd-MM-yy")-> 31-01-10


Supprimer les décimales d'un nombre :

'Nb de chèques : ' &  ToText(count({@montant}) ,
(IF  count(
{@montant})  = round(count({@montant}) ,0) then 0
else IF  count(
{@montant})  = round(count({@montant}) ,1) then 1
else 2))