|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
bonjour,
mon pb est le suivant: j'ai un état, je travaille sous crystal reports XI, qui affiche le total des volumes de transactions pour un mois donné, je lui passe le mois comme parametre et il me renvoie le total et pour se faire, j'ai créé une fonction derrière qui prend comme paramétre le mois. jusqu'à là tt fonctionne bien (pour un mois) mais mon pb c'est que je veux afficher les résultats pour six mois sans refaire le même état six fois. j'ai pensé à faire un autre rapport dont j'insere mon état comme sous rapport de façon que je lui passe le semestre comme parametre mais j'arrive pas à le faire. j'attend avec impatience vos idées et suggestions. Merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Fred Inscription : juillet 2007 Messages : 136 ![]() |
Bonjour,
Bon alors si j'ai bien suivi il suffit à la place d'avoir un mois en paramètre, il te faut avoir une plage de date (soit une période de 6 mois en l'occurence) Quand tu dis que tu as creer une fonction tenant compte du mois en paramètre, est ce une fonction de sélection ? si oui il suffit allors de remplacer ton champs paramètre par un champs paramètre de type date autorisant les valeur de plage. et ensuite d'écrire une formule de sélection dans le genre |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
je te remercie pour ta réponse, en fait mon champ paramétre, pour le sous rapport, est déjà une date mais mon deuxième champ paramètre, pour le rapport principal, est une plage de dates, alors je vois pas comment faire pour segmenter la plage en mois et la faire passer au sous rapport.
j'espère que j' ai été clair pour l'explication. Merci d'avance |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Fred Inscription : juillet 2007 Messages : 136 ![]() |
En fait non je comprend pas bien, tu veux passer un mois à ton sous rapport en paramètre, mais tu veux tout un semestre à l'affichage.
Donc c'est soit tu insère 6 sous rapport et tu transmet à chacun un mois différent avec un saut de page entre par exemple, soit tu transmet directement le semestre à ton sous rapport avec un affichage adapté pour les 6 mois (en créant 6 sections différentes pour chaque mois, par exemple) et là du coup c'est plus la peine de passer par des sous rapport. Mais si l'idée était de passer mois par mois (donc en 6 fois) à un unique sous rapport, et qu'au finale tu arrive avec un état qui contient à l'affichage tout le semestre, cela me parais totalement impossible. |
|
|
00
|
|
|
#5 |
|
Inactif
![]() Inscription : novembre 2006 Messages : 3 569 ![]() |
Bonsoir,
Je viens de lire plusieurs fois ce topic et je ne comprens vraiment pas ce que tu souhaite faire. Peux-tu détaillé stp ?
|
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
ok, je suis désolé de ne pas avoir bien expliqué! je vous explique:
en fait, mon pb c'est que je dois afficher les volumes des transactions pour chaque semestre, càd je dois renseigner la date de début du semestre et il doit me renvoyer finalement les volumes détaillés par mois ( un tableau par mois, 6mois au total). j'ai commencé par faire un état qui affiche les volumes détaillés pour un mois donné, pr celui là je lui passe en paramètre le mois é alors il m affiche les volumes des transactions correspondant à ce mois, jusqu'à là tout est bon (pour un seul mois ça fonctionne très bien), mais pour avoir les volumes des six mois je voudrais pas refaire l'état ( et ts les calculs derrière!) six fois !!! vous voyez c'est pour cela que j'ai pensé au sous état, je pense passer mon état (que j'ai fait pour un mois) comme sous état dans un rapport principal, pour ce dernier je lui passe le début de semestre comme paramètre et à lui de segmenter le semestre en mois et les faire passer au sous état. Pour segmenter le semestre, j'ai créé, dans le rapport principal, une commande qui me renvoie les six mois de semestre: voilà ma commande : (?date_deb c'est le début de semestre) select (select {?date_deb} from dual union select add_months({?date_deb},1) from dual union select add_months({?date_deb},2) from dual union select add_months({?date_deb},3) from dual union select add_months({?date_deb},4) from dual union select add_months({?date_deb},5) from dual) data from dual et maintenant je voudrais lier les deux rapports par le résultat de ma commande et c'est là où j'ai le problème, il ne me prend pas en compte le paramètre que je lui passe (?date_deb), il prend toujours la valeur par défaut. alors comment faire pr résoudre ce pb? ensuite j'aimerais savoir si je peux mettre le résultat de ma commande dans une variable j'espère que j'ai été clair et merci d'avance |
|
|
00
|
|
|
#7 |
|
Inactif
![]() Inscription : novembre 2006 Messages : 3 569 ![]() |
Bonjour,
Perso je ferai deux paramètres : datedeb et datefin et je ferai un groupe sur la date avec changement par mois... |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Fred Inscription : juillet 2007 Messages : 136 ![]() |
Ba oui parceque si j'ai bien compris la variable paramètre de réception dans ton sous état n'est pas une plage de date, et ce que tu souhaite faire ne peut pas marché (en fonction de ce que j'ai dis plus haut).
Moi je reprendrais mon état qui fonctionne avec un mois et je le modiefierais pour qu'il puisse fonctionner avec une plage de date en paramètre. Avec en groupe le paramètre qui contient la plage de date, et ta présentation en pied de page de ce groupe, ca dois fonctionner sans aucun problème. Mais je le répète tu ne peut pas transmettre 6 fois un mois à ton sous rapport, il n'y a pas de boucle pour faire cela. |
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
non ça va pas marché, pour mon cas, le groupe parce que je n'ai pas un champ que je peux regrouper avec (sont des dates à extraire de la date de début et date de fin)
|
|
|
00
|
|
|
#10 |
|
Inactif
![]() Inscription : novembre 2006 Messages : 3 569 ![]() |
|
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
mais moi je ne souhaite pas transmettre 6 fois le mois à mon sous état, en fait j'ai créé une commande qui me renvoie la plage des date et je souhaite tout simplement lier mes rapports par cette commande (qui est une plage de dates), en fait je suis débutant en crystal mais d'après que j'ai après si je lie les deux rapports par cette commande il va m afficher pour chaque date, de la plage, un état (qui est le sous rapport) est ce c pas possible?
sinon pr ta proposition, quel sera le type de parametre que je dois mettre, puisque c'est une plage de date, normalement il doit contenir plusieurs enregistrements, est ce qu il va etre tableau de date ou quoi exactement, normalement il doit etre un conteneur sinon je vois pas comment faire le regroupement par le parametre |
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
non je n 'ai pas un champ date, c'est dans le code où je calcule les volumes, en fait j'ai le champ date_operation et avec ça que je m en sers pour faire les calculs dans le code mais mais je peux pas faire le regroupement avec
|
|
|
00
|
|
|
#13 |
|
Inactif
![]() Inscription : novembre 2006 Messages : 3 569 ![]() |
|
|
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
j'aimerais bien que vous me confirmiez est ce que cette requête est juste ou pas :
select (select {?date_deb} from dual union select add_months({?date_deb},1) from dual union select add_months({?date_deb},2) from dual union select add_months({?date_deb},3) from dual union select add_months({?date_deb},4) from dual union select add_months({?date_deb},5) from dual) data from dual en fait, je veux récuperer les six mois dans la variable data, est c possible? parce qu il ne m affiche pas les mois qd j insére data dans le rapport |
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
parce que ça va pa me servir cette date, en fait, je prend la date de début de mois et je calcule la somme de toutes les opérations qui se sont passées dans ce mois ( date_operation =mois), et en plus je ne fais pas les calculs pour toutes les dates que j'ai dans la table ( y a des condions et des jointures que je fais auniveau du code)
|
|
|
00
|
|
|
#16 |
|
Inactif
![]() Inscription : novembre 2006 Messages : 3 569 ![]() |
Mais bien sûr que si elle va servir cette date ! Puisque tu t'appuies dessus...
Si tu mets un code dans l'expert selection, les calculs ne seront fait que sur ce qui est sélectionné |
|
|
00
|
|
|
#17 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
en fait, sur l expert selection je n'ai mis que de requêtes qui font appel à la fonction de calcul que j'ai developpé sur sql navigator, mais en tout cas comme je t ai expliqué, ça va pas me servir ce champ
mais dites moi svp est c la requête que j'ai mentionné dans mon msg précedent est juste!? |
|
|
00
|
|
|
#18 |
|
Membre habitué
![]() Fred Inscription : juillet 2007 Messages : 136 ![]() |
Le truc c'est qu'avec Crystal Report, moi je ne suis pas expert en code SQL, puisque l'avantage de l'expert de sélection c'est d'éviter d'écrire du SQL.
Donc moi j'avourerais que ta requête me parles pas beaucoup, toutefois si tu veux bien l'expliquer Tu écris ce code dans un champs d'expression SQL (parceque j'ai pas encore compris à quoi servais ces champs Maintenant pour ce qui est de la philosophie Crystal Report : Si tu creer un champs de formule qu'on appelera Mois Code :
cstr({date_operation , "MMMM") + " " + Cstr({date_operation}, "yyyy") Que tu creer un groupe avec le champs @Mois, et que tu creer une sélection sur ce groupe : Et qu'ensuite tu met ton tableau dans le groupe, on devrais pas être loin de ce que tu souhaite faire, ou en tout cas essai de t'en inspirer. |
|
|
00
|
|
|
#19 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
oui c bein d utiliser l expert selection mais parfois on se trouve devant l obligation de faire des requêtes manuellement qu on ne peut pas les avoir avec expert selection.
en fait, le but de ma requête c'est d'avoir plusieurs dates à partir du parametre ?date_deb (qui est la date de début de mon semestre) et c'est pour cela que j'ai fait des "union" afin d'avoir plusieurs enregistrements: le premier "select {?date_deb} from dual" va mettre la date de départ (le parametre) dans le premier enregistrement, le deuxième "select add_months({?date_deb},1) from dual" va mettre le deuxième mois du semestre dans le deuxième enregistrement, et ainsi de suite jusqu'à la sixième date et comme ça j aurais à la fin six enregistrements (six lignes). mais en fait, j'ai procédé ainsi parce que je savais pas l'option "valeur de plage" merci, je vais essayer en utilisant "valeur de plage" ah oui, pour ma requête, je l ai fait dans une commande |
|
|
00
|
|
|
#20 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 28 ![]() |
en fait j'ai opté pour la plage de valeurs mais je dois en fait selectionner les données en fonction du parametre plage de valeur, càd que je dois avoir dans ma formule
{?madate} in [{?plage_de_dates}] mais ça ne marche pas, il ne prend pas {?plage_de_dates} comme une liste des dates! est c possible de faire cette formule? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com