Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Salut à tous,
Mon rapport est très spécifique, il doit contenir 3 entêtes dans le même rapport.
Exemple :
---------------------------------------------------------------------------------------
Champ 1 Champ 2 Champ 3
Ligne1
Ligne2
Ligne3
Ligne4
Ligne5
Champ 4 Champ 5 Champ 6
Ligne6
Ligne7 Champ 4 Champ 5
Ligne8 Ligne11
Ligne9 Ligne12
Ligne10
---------------------------------------------------------------------------------------
Or, lors de la création de l’entête d’une datawindow tabular se crée dynamiquement.
Existe t’il un moyen pour faire ce type du rapport.
Merci d’avance
Dernière modification par mattdamon (28-05-2009 09:32:12)
Hors ligne
Je l'ai trouvé...
Il fallait créer 3 datawindows : la première contient : Champ 1 Champ 2 Champ 3
la deuxième contient : Champ 4 Champ 5 Champ 6 et la troisième contient: Champ 4 Champ 5.
finalement il faut créer une datawindow principale puis on fait appel à ces trois datawindow en tant repport en allant dans Insert ==>control==>report et on positionne chaque datawindow dans sa place.
Et voilà la vie est belle..
Dernière modification par mattdamon (25-05-2009 15:23:48)
Hors ligne
Bonsoir à tous,
je revient autrefois sur ce sujet.
En fait, je suis arrivé a positionner 5 reports dans une datawindow. mais je sais pas est-ce que c'est possible de manipuler ces reports (faire le getitem et setitem, retrieve....) ?
Je crois que seulement le l'événement retrieve() que ça marche non ? le retrieve() de la datawindow principale où j'ai positionné les 5 reports.
Merci,
Dernière modification par mattdamon (27-05-2009 07:15:41)
Hors ligne
il faut récupérer les reports via un GetChild sur la DW principale
ensuite tu pourras les manipuler à ta guise
Hors ligne
J'arrive pas à comprendre pourquoi rtncode me retourne -1.
DataWindowChild child_report integer rtncode rtncode = dw_principale.GetChild('dw_1', child_report) child_report.dataobject = 'rw_etat' child_report.settransobject(SQLCA)
quand j'affecte la dataobject : rw_etat à child_report, un message d'erreur qui s'affiche :
Incompatible property dataobject for type datawindowchild
SVP, c'est quoi le problème ?
Dernière modification par mattdamon (27-05-2009 15:22:01)
Hors ligne
c'est quoi ton dw_1 ? il faut utiliser le nom du report intégré dans la DW principale :
rtncode = dw_principale.GetChild('r_report', child_report)
Hors ligne
erasorz a écrit:
c'est quoi ton dw_1 ? il faut utiliser le nom du report intégré dans la DW principale :
Code: pb
rtncode = dw_principale.GetChild('r_report', child_report)
voici ce que j'ai :
J'ai utilisé dw_1 et rw_etat mais toujours le même resultat
rtncode = dw_principale.GetChild('dw_1', child_report)
rtncode = dw_principale.GetChild('rw_etat', child_report)
Dernière modification par mattdamon (27-05-2009 16:25:57)
Hors ligne
C'est ma faute, je l'ai trouvé...
il faut que la datawindow principale est de type composite
Hors ligne
j'allais le dire
A report is a DataWindow that is part of a composite DataWindow.
Hors ligne
erasorz a écrit:
j'allais le dire
A report is a DataWindow that is part of a composite DataWindow.
Merci erasorz, bonne journée
Hors ligne
lors de la création de ma datawindow principale de type composite datawindow, j'ai lui selectionné 5 reports de type tabular datawindow.
l'image ci-dessus montre le nom d'un report que je l'ai positionné sur la datawindow principale :
le code ci-dessus montre comment la manipulation du premier report.
DataWindowChild child_report integer rtncode rtncode = dw_principale.GetChild('dw_1', child_report) child_report.settransobject(SQLCA) child_report.retrieve()
le problème c'est que je comprend pas pourquoi le retrieve() me retourne 0 malgré que le select du report sur pl/sql developer me retourne des lignes.
Est ce que il existe des choses qui manquent dans mon code ?
je besoin de vos aides...
Merci à vous.
Dernière modification par mattdamon (28-05-2009 09:27:49)
Hors ligne
quel est l'intéret de faire un retrieve d'un sous-report ?
quand tu fais un retrieve de la DW principale, tous les reports inclus sont aussi "retrievés"...
(d'ailleurs ton settransobject(SQLCA) est inutile si tu l'a déjà fait sur la DW principale)
Hors ligne
Erasorz a écrit:
quel est l'intéret de faire un retrieve d'un sous-report ?
quand tu fais un retrieve de la DW principale, tous les reports inclus sont aussi "retrievés"...
Sauf dans le cas ou l'on a des arguments à envoyer à chaque child_report
DataWindowChild child_report1,child_report2,child_report3 integer rtncode1,rtncode2,rtncode3 dw_principale.settransobject(SQLCA) rtncode1 = dw_principale.GetChild("dw_1", child_report1) child_report1.settransobject(SQLCA) rtncode2 = dw_principale.GetChild("dw_2", child_report2) child_report2.settransobject(SQLCA) rtncode3 = dw_principale.GetChild("dw_3", child_report3) child_report3.settransobject(SQLCA) child_report1.retrieve(arg1,arg2) child_report2.retrieve(arg1,arg3) child_report3.retrieve(arg4,arg5)
Hors ligne
euh, il suffit d'envoyer tous les arguments à la composite qui elle-même redispatchera aux reports
Hors ligne
erasorz a écrit:
quel est l'intéret de faire un retrieve d'un sous-report ?
quand tu fais un retrieve de la DW principale, tous les reports inclus sont aussi "retrievés"...
(d'ailleurs ton settransobject(SQLCA) est inutile si tu l'a déjà fait sur la DW principale)
Tu peux me dire pourquoi le setitem et le getitem ne fonctionnent jamais ? toujours -1 comme retour
Hors ligne
mattdamon a écrit:
Tu peux me dire pourquoi le setitem et le getitem ne fonctionnent jamais ? toujours -1 comme retour
Simplement parcequ'une composite n'est pas modifiable. Elle ne peut qu'afficher des informations.
Hors ligne
foon a écrit:
mattdamon a écrit:
Tu peux me dire pourquoi le setitem et le getitem ne fonctionnent jamais ? toujours -1 comme retour
Simplement parcequ'une composite n'est pas modifiable. Elle ne peut qu'afficher des informations.
Mais comme il a dit erasorz que avec le GetChild sur la DW principale cela peux fonctionner non ?
erasorz a écrit:
il faut récupérer les reports via un GetChild sur la DW principale
ensuite tu pourras les manipuler à ta guise
Hors ligne
Tu peux peut-être utiliser ça
Value = dw_principale.object.child_report.object.nom_colonne[i]
Hors ligne
Erasorz a écrit:
euh, il suffit d'envoyer tous les arguments à la composite qui elle-même redispatchera aux reports
C'est vrai qu'il suffit d'envoyer les arguments à la composite. C'est juste que le code donné par Mattdamon n'est pas incorrect.
En plus, cette methode me permet d'envoyer des arguments de type Number_array à ma composite.
Hors ligne
Foon a écrit:
Simplement parcequ'une composite n'est pas modifiable. Elle ne peut qu'afficher des informations.
C'est faux, j'ai des composites dans mes impressions, et je les manipules comme une datawindow. Je vais chercher des données et je vais modifier des colonnes.
Hors ligne
nico a écrit:
Foon a écrit:
Simplement parcequ'une composite n'est pas modifiable. Elle ne peut qu'afficher des informations.
C'est faux, j'ai des composites dans mes impressions, et je les manipules comme une datawindow. Je vais chercher des données et je vais modifier des colonnes.
Exact , mais il y a une limitation, qui concerne peut-être la composite de Mattdamon:
Aide PB a écrit:
Nested reports You cannot use GetChild to get a reference to a report in a composite DataWindow when the report itself is a composite or nested DataWindow.
(Cette limitation est agaçante, car elle ne permet pas de manipuler des données dans une datawindow récursive )
Hors ligne
Je sais pas pourquoi j'ai opté au départ ce choix d'utilisation des reports, parce que on peux le faire autrement sans datawindow composite et reports...
tout ce que j'ai fait, j'ai construit une datawindow standard dont le quel j'ai mis tout les champs que j'ai besoin ensuite pour alimenter mon rapport, je fais les GetItem et les SetItem...
Ça n'empêche pas que le sujets est très intéressent et besoin d'investigation...
A+
Dernière modification par mattdamon (29-05-2009 10:20:31)
Hors ligne