Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Initialisation de données dans un sous-rapport external
  • 1 évaluations, moyenne 5

#1 12-03-2012 08:24:02

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

[RESOLU] Initialisation de données dans un sous-rapport external

Hello, j'ai une DW tabular external qui contient divers sous-rapports external.
Je voudrais compléter mes données des sous-rapports, mais je trouve pas.

J'aiessayer avec un getchild, mais Pb mes dis que mon sous-rapport n'est pas une window child ????
Que faire ???

Je suis en Pb 9.0

Complément : je viens d'essayer avec une DW composite, contenant mes sous-rapports, mais ça va pas mieux !!!

Merci

Dernière modification par Sylvie de hannut (20-03-2012 14:37:20)

Hors ligne

 

#2 12-03-2012 09:30:14

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Initialisation de données dans un sous-rapport external

tu pourrais poster un extrait du code qui ne compile pas (je presume) ?


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#3 12-03-2012 11:55:54

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Le code compil, il plante à l'exécution.
Nouvel essai :

1ère fonction :

Code:

  old_processing=ids_print.Object.Datawindow.Processing
  ids_print.Object.Datawindow.Processing="5" // Composite
  rtncode = ids_print.GetChild('d_tigr_it001_print', idwc_print)
  IF rtncode = -1 THEN MessageBox("Error", "Not a DataWindowChild")

Fonction d'initialisation des valeurs :

Code:

      li_ret = idwc_print.setitem(li_row,'dateit',as_t_data[1]+as_t_data[2]+'-'+as_t_data[3]+'-'+as_t_data[4])
      li_ret = idwc_print.setitem(li_row,'datedel',as_t_data[5]+as_t_data[6]+'-'+as_t_data[7]+'-'+as_t_data[8])
      li_ret = idwc_print.setitem(li_row,'residence',as_t_data[9])
      li_ret = idwc_print.setitem(li_row,'code_residence',as_t_data[10])
      li_ret = idwc_print.setitem(li_row,'fusion',as_t_data[11])
      li_ret = idwc_print.setitem(li_row,'language',as_t_data[12])

J'ai pas d'erreur à la compil, et à l'exécution, pour le setitem, Pb me renvoie une erreur -1.

??????

Hors ligne

 

#4 12-03-2012 12:07:00

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Bonjour,

Tu n'aurais pas simplement oublié l'InsertRow avant de faire le SetItem, tu ne le mentionnes pas dans ton extrait de code ?

Code: pb

...
li_row = idwc_print.InsertRow(0)

Hors ligne

 

#5 12-03-2012 12:10:04

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Initialisation de données dans un sous-rapport external

NB :


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#6 12-03-2012 12:53:31

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Sylvie de hannut a écrit:

...
J'ai pas d'erreur à la compil, et à l'exécution, pour le setitem, Pb me renvoie une erreur -1.

??????

Avec la MessageBox("Error", "Not a DataWindowChild") qui apparaît avant d'avoir -1 sur les setitem ?
Si oui: c'est "normal" car idwc_print n'étant pas correctement affecté car GetChild(...)=-1, il n'a (peut-être) pas de dataobject/dwsyntax valide.
Je te conseil de vérifier pourquoi le GetChild ne fonctionne pas: quel est l’intérêt de modifier le processing=5 avant de faire le GetChild?
Que vaut ids_print.Describe("d_tigr_it001_print.type") ?


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#7 12-03-2012 13:25:43

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

le processing=5 permet de modifier ma dw de tabular en composite, pour que pb reconnaisse bien mes sous-rapports comme des dw child ==> le getchild fonctionne bien !!!

Le setitem ne me renvoie plus d'erreur !!!

Aucun affichage en fin de traitement ????????????

Hors ligne

 

#8 12-03-2012 13:40:10

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Qu'est-ce qui peux faire qu'un sous-rapport external ne s'imprime pas ????

Hors ligne

 

#9 12-03-2012 13:44:50

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Tu n'as pas répondu à la question de Buck sur le InsertRow


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#10 12-03-2012 13:46:57

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

le insertrow est fait, et apparement il n'y a pas d'erreur.

Je ne comprend pas, j'ai aucune erreur nulle part, mais en fin de trt, je n'ai rien à l'affichage, même pas les titres de mes sous-rapports se trouvant dans les header !!!!!

Hors ligne

 

#11 12-03-2012 13:51:49

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Je suppose qu'il n'y a pas de filtre d'actif sur ta datawindow?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#12 12-03-2012 13:55:00

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

non aucun filtre

Hors ligne

 

#13 12-03-2012 13:56:09

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

je n'ai jamais travailler avec des dw external, je fais peut-être quelque chose d'erroné.

Pour moi, il suffit d'insérer des données pour qu'elles s'affichent, non ?

Hors ligne

 

#14 12-03-2012 14:04:52

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Tu n'as pas non plus précisé le type de tes reports: ce sont des external, mais y a-t'il parmi elles une datawindow RichText?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#15 12-03-2012 14:17:55

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Attention à ne pas confondre une DW composite et une DW avec un nested report.
Ce n'est pas le même comportement.
Pour une composite, il n'y a pas de datasource, donc les reports intégrés dedant sont chargés en direct
Pour une nested, il faut impérativement avoir des lignes dans celle-ci pour que les reports intégrés s'affichent, ceux -ci étant
chargés en fonction des lignes présentes dans ta nested.
Ton idée de modifié par code le processing est erronée. Il vaut mieux partir d'une vrai composite, ou s'assurer que ta nested est correctement chargée.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#16 12-03-2012 14:35:50

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Information complémentaire  : il n'y a pas de db associée à ce programme Pb et je travaille via un datastore !!!!

C'est pour cette raison que je travaille tout en external, et non je n'ai pas de rich text.

Juste une DW external liée à un datastore, contenant diverses autres dw external, tout en tabular.
J'espérais remplir ma datastore pour ensuite la passer à ma fenêtre d'impression.
Mais ma fenêtre d'impression n'affiche rien, aucune donnée venant d'un de mes sous-rapport ???

Même si j'encadre mes sous-rapports, il n'y a rien qui s'affiche ???

Dernière modification par Sylvie de hannut (12-03-2012 14:54:53)

Hors ligne

 

#17 12-03-2012 15:52:56

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2487
Pépites: 88
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Et tu as des lignes dans ta datastore? Je suppose qu'elle est en sharedata avec ta DW external?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#18 12-03-2012 16:20:25

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Création du datastore
ids_print = create datastore
ids_print.dataobject = "dw_l_resp_niss_report_group2"
ids_print.settransobject(sqlca)


dw_l_resp_niss_report_group2 : contient plusieurs sous-rapports external

Création d'une datawindowchild liée à ids_print

old_processing=ids_print.Object.Datawindow.Processing
ids_print.Object.Datawindow.Processing="5" // Composite
rtncode = ids_print.GetChild('d_tigr_it001_print', idwc_print)
IF rtncode = -1 THEN MessageBox("Error", "Not a DataWindowChild")
idwc_print.SetTransObject(SQLCA)


Initialisation des données de mon 1er dwc

idwc_print.insertrow(1)
li_ret = idwc_print.setitem(li_row,'dateit',ldt_dateit)
if li_ret <> 1 then messagebox ('ERROR SETITEM','1')
li_ret = idwc_print.setitem(li_row,'datedel',ldt_datedel)
if li_ret <> 1 then messagebox ('ERROR SETITEM','2')
li_ret = idwc_print.setitem(li_row,'residence',as_t_data[9])
if li_ret <> 1 then messagebox ('ERROR SETITEM','3')
li_ret = idwc_print.setitem(li_row,'code_residence',as_t_data[10])
if li_ret <> 1 then messagebox ('ERROR SETITEM','4')
li_ret = idwc_print.setitem(li_row,'fusion',as_t_data[11])
if li_ret <> 1 then messagebox ('ERROR SETITEM','5')
li_ret = idwc_print.setitem(li_row,'language',as_t_data[12])
if li_ret <> 1 then messagebox ('ERROR SETITEM','6')


A la fin du trt, je n'ai l'affichage que des données de la dw main, pas des sous-rapports.

Merci de votre aide, je commence à voir peur de ne pas y arriver et de devoir remplir dynamiquement une zone texte, de mon rapport principal, mais pour faire la mise en page ça va être coton, surtout qu'il risque d'y avoir plusieurs pages de résultat.

Hors ligne

 

#19 12-03-2012 16:55:57

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Initialisation de données dans un sous-rapport external

juste une proposition pour t'aider, tu peux fournir les syntaxes des dw (en mp si nécessaire) ?
que je regardes dans ma DatawindowDebugMachine


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#20 13-03-2012 07:51:29

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Bonjour, en y repensant et en rapport avec les test effectué par un collègue, je me dis que c'est l'affichage des sous-rapports qui pose problème.
En passant par une autre solution que moi, il a le même résultat : affichage des données main mais pas des autres données.

Parlons clairement : y a t'il un problème pour afficher les données de sous-rapports liés à un datastore, quand on rempli celui-ci via un nvo, et que le datastore créé est en sharedata avec la dw d'affichage ?????

Dernière modification par Sylvie de hannut (13-03-2012 08:38:21)

Hors ligne

 

#21 13-03-2012 10:00:04

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Sylvie de hannut a écrit:

Bonjour, en y repensant et en rapport avec les test effectué par un collègue, je me dis que c'est l'affichage des sous-rapports qui pose problème.
En passant par une autre solution que moi, il a le même résultat : affichage des données main mais pas des autres données.

Parlons clairement : y a t'il un problème pour afficher les données de sous-rapports liés à un datastore, quand on rempli celui-ci via un nvo, et que le datastore créé est en sharedata avec la dw d'affichage ?????

C'est déjà plus probable que ce soit çà qui pose problème.

- vérifie que ids_print.sharedata( dw_affichage ) = 1
- je t'aurais bien proposer de tester via getFullState/setFullState, mais cela étant buggé justement lorsque l'on à des sous rapports.

Par contre me viens une autre idée: as tu partagé aussi le child de la dw_affichage ?

Code: pb

if ids_print.GetChild('d_tigr_it001_print', idwc_print) = 1 then
  datawindowchild ldwc_affichage
  if dw_affichage.GetChild('d_tigr_it001_print', ldwc_affichage ) = 1 then
      if idwc_print.sharedata( ldwc_affichage ) <> 1 then
          messagebox("share childs", "echec!",exclamation! )
      end if
  end if
end if

https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#22 20-03-2012 14:57:23

Sylvie de hannut  
Membre completement Geek
Lieu: Hannut (Belgique)
Date d'inscription: 10-06-2011
Messages: 123
Pépites: 499
Banque: 0

Re: [RESOLU] Initialisation de données dans un sous-rapport external

ce que j'ai fait :
Pour Remplir les données des sous-rapports, j'ai utilisé la dotnotation
Ne pas faire d'insertrow, donner la ligne d'affichage

Code:

ids_print.object.d_tigr_it001_print[1].object.dateit[ai_row] = ldt_dateit

Traitement de partage des données, pas réussi à faire le sharedata, alors j'ai fait un rowscopy, entre les sous-rapports de ma dw-affichage et les sous-rapports de mon datastore.

Code:

if dw_main.Object.DataWindow.Nested then
   li_nb_ds = f_get_ds_object_attrib(i_ds_orig,ls_tab_ds[])   !!!! fonction qui recherche le nb de sous-rapports
   li_nb_dw = f_get_dw_object_attrib(dw_main,ls_tab_dw[])
end if
  
if li_nb_ds <> li_nb_dw then messagebox ('ERROR','Problème recherche nested report')
  
if li_nb_ds > 0 then
  old_processing1=i_ds_orig.Object.Datawindow.Processing
  i_ds_orig.Object.Datawindow.Processing="5" // Composite

  old_processing2=dw_main.Object.Datawindow.Processing
  dw_main.Object.Datawindow.Processing="5" // Composite
  
  // Création des dwc pour chaque nested report récupérés
  for i = 1 to li_nb_ds
    rtncode = i_ds_orig.GetChild(ls_tab_ds[i], dwc_ds_tab[i])
    IF rtncode = -1 THEN MessageBox("Error", "Not a DataWindowChild")
    rtncode = dw_main.GetChild(ls_tab_dw[i], dwc_dw_tab[i])
    IF rtncode = -1 THEN MessageBox("Error", "Not a DataWindowChild")
  next
    
  // Boucle de rowscopy
  for i = 1 to li_nb_ds
    if dwc_ds_tab[i].rowcount() > 0 then
      rtncode = dwc_ds_tab[i].RowsCopy (1,dwc_ds_tab[i].rowcount(), Primary!, dwc_dw_tab[i],1,Primary!)
      IF rtncode = -1 THEN MessageBox("Error", "Problème rowscopy")
    end if
  next
    
  i_ds_orig.Object.Datawindow.Processing=old_processing1
  dw_main.Object.Datawindow.Processing=old_processing2
end if

Le changement de processing est là car le getchild ne fonctionne que sur les dw composite, mais moi je pars d'une dw tabular qui contient des données external.

J'espère avoir étée claire.

Hors ligne

 

#23 20-03-2012 16:08:06

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Initialisation de données dans un sous-rapport external

Merci de ton retour,


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Initialisation de données dans un sous-rapport external
  • 1 évaluations, moyenne 5

Pied de page des forums

Propulsé par FluxBB 1.2.22