Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports
Crystal Reports Forum d'entraide sur Crystal Reports. Avant de poster --> FAQ Crystal, Tutoriels Crystal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/03/2005, 10h12   #1
Rédacteur
 
Avatar de Giovanny Temgoua
 
Étudiant
Inscription : novembre 2003
Messages : 3 831
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2003
Messages : 3 831
Points : 2 826
Points : 2 826
Par défaut [CR 10] Centrer verticalement un élément dans une boîte

Bonjour

Cette fois, il s'agit de centrer verticalement un élément dans une boîte. Vous pouvez voir un aperçu de ce que j'ai ici (capure d'écran).

L'état affiche la liste des numéros de téléphones et des codes PUK des puces d'un client; l'ensemble est groupé par ordre alphabétique de nom de client. J'ai crée un sub-group header de sorte que les groupes sont entourés d'un Box (dans la capture d'écran, je n'ai montré qu'un seul groupe). Mais j'aimerai changer la position du groupe Nom de sorte que quelque soit la hauteur du Box, que le nom soit toujours à 50% du bord horizontal supérieur. Concrètement, j'aimerai avoir un état comme cà.

J'ai cherché comment je pouvais le faire à partir de formule mais je ne sais pas comment on peut spécifier la position d'un objet

Merci pour votre aide.
Giovanny Temgoua est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 10h57   #2
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
bonjour,
si tu étais sûr que le groupe tient sur la page courante tu pourrais le faire par une formule
en interrogeant le count(detail) pour un groupe et en ajoutant autant de retour à la ligne
que la moitié arrondie à l'inférieur.
Mais tu ne peux pas savoir si un groupe tient sur une page avant de l'ecrire.
Le problème est lié aux ruptures de page
Crystal le sait mais l'information ne peut pas être connue à l'execution dans une formule.
J'y réfléchis, si j'ai une idée je ferais un edit de ce message.
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 11h01   #3
Membre éprouvé
 
Avatar de sur_uix
 
Inscription : mai 2002
Messages : 377
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2002
Messages : 377
Points : 471
Points : 471
Hello,
Extra les capture d'écran. Comme quoi une image vaux mieux qu'un long discourt.

par contre je dirais que c'est casi impossible.
Une piste toute fois. Si tu connais le nombre de recorde que tu as pour un groupe, alors tu place ton champs DD dans le détail comme le numéro de téléphone et le PukCode, et tu joue avec la forumle "Suppress"....
sur_uix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 11h07   #4
Rédacteur
 
Avatar de Giovanny Temgoua
 
Étudiant
Inscription : novembre 2003
Messages : 3 831
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2003
Messages : 3 831
Points : 2 826
Points : 2 826
Citation:
Envoyé par L.nico
J'y réfléchis, si j'ai une idée je ferais un edit de ce message.
Merci

Citation:
Envoyé par sur_uix
je dirais que c'est casi impossible.


Je ne peux pas connaître à l'avance le nombre d'enregistrement pour un groupe, mais je pense qu'un groupe ne devrait pas tenir sur plus d'une page (il faudrait que le client soit fournisseur de téléphone quelque part ) Donc, cà ne me gène pas trop de faire un saut de page===>
Citation:
Envoyé par L.nico
Mais tu ne peux pas savoir si un groupe tient sur une page avant de l'ecrire.
On peut supposer que si

Merci
Giovanny Temgoua est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 11h23   #5
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
Dans l'hypothèse que :
- 1 groupe tient sur une page
- 1 Page par client (pour éviter les ruptures de pages en plein milieu des groupes).

On spécifie que la section Début de groupe s'affiche en fonds de section suivante.

On ajoute en début de groupe une formule (Formule non testée mais ca doit ressembler à ça) :
Code :
Formula = ReplicateString(Chr(13),Abs(Count(Phone,GROUP)/2)) & {Client.Nom}
enfin c'est une idée .... mais on peut adapter ce code aussi pour qu'il fonctionne avec l'idée de Sur_uix
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 13h27   #6
Rédacteur
 
Avatar de Giovanny Temgoua
 
Étudiant
Inscription : novembre 2003
Messages : 3 831
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2003
Messages : 3 831
Points : 2 826
Points : 2 826
Je teste cà et je dis ce que cà donne
Je vais aussi voir comment on utilise Suppress.

J'ai un autre problème en suspend mais cà attendra

Merci
Giovanny Temgoua est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 14h39   #7
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
Encore une autre solution en relation avec celle de notre ami Sur_uix ...

Il te faut 2 compteurs
un que tu réinitialise en début de page (Y)
et l'autre que tu réinitialise en début de groupe. (Z)

Pour chaque page tu sais que tu peux faire x lignes
A chaque fois que tu edites 1 ligne, tu incrémentes Y

Si tu sais que ton groupe va tenir sur la page car il contient moins de lignes
que le total restant de la page (x-y), alors tu rends visible la ligne détail
lorsque Z = Abs(Count({Phone},{client}/2)

Sinon

Tu rends visible la ligne lorsque Z = Abs((x-y)/2)

Donc voilà, c'est une autre idée :

mais les problèmes subsistent :
combien de lignes pour 1 page ??
il te faut quelques part une constante du nombre de lignes par page.
le problème c'est que c'est liè à l'imprimante et aux marges ....

et pour la solution précédente :
la hauteur de la police ne correspond pas à la taille de la section.

Aucune solution ne peut être exactement juste vu qu'on ne dispose
pas de toutes les informations.
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 15h13   #8
Rédacteur
 
Avatar de Giovanny Temgoua
 
Étudiant
Inscription : novembre 2003
Messages : 3 831
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2003
Messages : 3 831
Points : 2 826
Points : 2 826
Je risque lire toute la doc de Crystal en une journée

J'ai fait un test de la fonction ReplicateString, mais cà à un inconvénient . Toutes les lignes sont décallées.
Je place le champ Test dont la formule est :
Code :
"BEGIN" + ReplicateString(Chr(13),5) + "END"
et j'obtiens cette figure

si je mets la propriété Can grow de ce champ à true, j'obtiens ceci

J'ai cet effet lorsque je place le champ dans un Header.

J'ai essayé de placer aussi dans le champ Details, mais c'est pire

Je ne suis pas sûr de savoir manipuler Suppress, mais dans le Format Field, je coche "Suppress if duplicated" et je tape cette formule :

Code :
1
2
3
4
IF ({@NumberOfSpace} > 1) Then
    true
Else
    False
NumberOfSpace retourne le nombre de lignes détails.

Mais le décalage subsiste (bien que le BEGIN...END n'apparaît qu'une seule fois).

Citation:
Envoyé par L.nico
Donc voilà, c'est une autre idée :
Si j'arrive à la mettre en place, je te ferai signe (il faudrait que je sache comment jouer sur la visibilité et d'autres trucs ).
Si tu as un peu de temps, pourrais tu essayer de réaliser un exemple (dans les conditions de ton choix).

Merci.
Giovanny Temgoua est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 15h20   #9
Modérateur
 
Avatar de L.nico
 
Homme Nicolas LAURET
Chef de projet en SSII
Inscription : novembre 2003
Messages : 1 024
Détails du profil
Informations personnelles :
Nom : Homme Nicolas LAURET
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2003
Messages : 1 024
Points : 1 744
Points : 1 744
Pense à mettre la section en fonds de section suivante dans le cas 1.
Et tu verras que rien ne va se décaler
__________________
Modérateur Business Intelligence / Windev

A lire avant de poster
Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton
L.nico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 16h41   #10
Rédacteur
 
Avatar de Giovanny Temgoua
 
Étudiant
Inscription : novembre 2003
Messages : 3 831
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2003
Messages : 3 831
Points : 2 826
Points : 2 826


Il faut glisser le Group Header dans la section Détails. Ensuite, la formule à taper après avoir coché l'option Suppress (Menu Format Field)

Code :
1
2
3
4
IF ({#TotalperGroup} <> {@NumberOfSpaceBy2}) Then
    true
Else
    False
TotalperGroup est le total par groupe (à la différence de Count, il s'incrémente au fur et à mesure qu'on lit les enregistrements).
NumberOfspaceBy2 est définit par :

Code :
Round(Abs(Count({SimCard.PhoneNumber},{Client.Name})) / 2)
Une capture
(les noms donnés ne sont que des exemples )

Citation:
Envoyé par L.nico
Pense à mettre la section en fonds de section suivante dans le cas 1.
(je ne savais pas cà aussi)
Citation:
Envoyé par sur_uix
tu joue avec la forumle "Suppress"....
Maintenant, je sais jouer avec le Suppress

Encore merci à tous
Giovanny Temgoua est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2005, 14h25   #11
Membre éprouvé
 
Avatar de sur_uix
 
Inscription : mai 2002
Messages : 377
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2002
Messages : 377
Points : 471
Points : 471
Merci de poster ta solution. Il faudrait mettre ce poste au chaud..... hein L.nico qu'est-ce que tu en penses ????
sur_uix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h00.


 
 
 
 
Partenaires

Hébergement Web