Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Hello,
J'ai une DW dont un des champs est une DDDW.
J'aimerais avant l'update de la DW détecter si une option de la DDDW a été selectionnée, pour pouvoir récupérer les infos.
J'ai essayé avec DDDW.GetSelectedRow(0)
datawindowchild ldwc_dw dw_det.GetChild("depts_libel_fr",ldwc_dw) IF ldwc_dw.GetSelectedRow(0) > 0 THEN ls_soc = ldwc_dw.GetItemString(ldwc_dw.GetRow(),"soc_code") ls_imp = ldwc_dw.GetItemString(ldwc_dw.GetRow(),"imp_codef") END IF
Mais il me renvoie toujours les valeurs de la première ligne le DDDW, même si rien n'a été sélectionné.
Quelqu'un a-t-il une idée ?
Dernière modification par elbrizzio (11-09-2007 12:43:51)
Hors ligne
Bonjour,
Je ne sais pas si ça peut t'aider, mais tu peux déjà tester si tu as une valeur au niveau du champ "depts_libel_fr" de ta datawindow dw_det:
S'il n'y en a pas, c'est que aucune valeur n'a été sélectionnée dans la dddw correspondante.
Ceci ne marche évidemment pas si tu as une valeur insérée par défaut, ou si tu as fait un retrieve de données existantes...
Hors ligne
Le champs 'dept_libel_fr' est de type DDDW éditable et en autoretrieve et
rempli via une valeur introduite dans une autre zone de la DW, mais modifiable via
une sélection dans la DDDW, d'où la nécessité de tester si une sélection a été opérée.
Je ne pige pas vraiment la piste de JCZ avec les buffers de la DW.
Tu penses à travailler avec un Getitemstatus ?
J'ai essayé mais il retourne DataModified! pour la ligne renvoyée par le GetSelectedrow(), la 1ère en fait.
Hors ligne
et comme ca ?
datawindowchild ldwc_dw dw_det.GetChild("depts_libel_fr",ldwc_dw) IF ldwc_dw.GetSelectedRow(0) > 0 THEN ls_soc = ldwc_dw.GetItemString(ldwc_dw.GetSelectedRow(0),"soc_code") ls_imp = ldwc_dw.GetItemString(ldwc_dw.GetSelectedRow(0),"imp_codef") END IF
Hors ligne
pick ouic a écrit:
et comme ca ?
Code: pb
datawindowchild ldwc_dw dw_det.GetChild("depts_libel_fr",ldwc_dw) IF ldwc_dw.GetSelectedRow(0) > 0 THEN ls_soc = ldwc_dw.GetItemString(ldwc_dw.GetSelectedRow(0),"soc_code") ls_imp = ldwc_dw.GetItemString(ldwc_dw.GetSelectedRow(0),"imp_codef") END IF
Même chose qu'avec le GetRow().
Le GetSelectedRow(0) et le GetRow() renvoie à la 1ère ligne de la DDDW ...
Hors ligne
elbrizzio a écrit:
Hello,
J'ai une DW dont un des champs est une DDDW.
J'aimerais avant l'update de la DW détecter si une option de la DDDW a été selectionnée, pour pouvoir récupérer les infos.
Que cherches tu as faire exactement ?
T'assurer que la dernière sélection effectuée dans ta DDDW soit bien reportée dans ta DW => Accepttext()
Connaitre à quelle libellé de ta DDDW correspond la valeur dans ta DW => LookUpDisplay
...
Hors ligne
fais nous un export de ta dw... qu'on voit un peu la carcasse...
et ta dropdowndw affiche bien plusieurs lignes ?
Hors ligne
Chrnico a écrit:
elbrizzio a écrit:
Hello,
J'ai une DW dont un des champs est une DDDW.
J'aimerais avant l'update de la DW détecter si une option de la DDDW a été selectionnée, pour pouvoir récupérer les infos.Que cherches tu as faire exactement ?
T'assurer que la dernière sélection effectuée dans ta DDDW soit bien reportée dans ta DW => Accepttext()
Connaitre à quelle libellé de ta DDDW correspond la valeur dans ta DW => LookUpDisplay
...
Le champs correspondant à la DDDW 'Département' est rempli par défault à partir d'un autre champs 'Demandeur'.
Quand l'utilisateur remplit le champs 'demandeur', ds l'item changed je vais chercher le libellé correspondant au département du demandeur ainsi que le code du département.
et je l'affiche dans la zone DDDW 'Département'. Mais l'utilisateur peux sélectionner un département qui ne correspond pas à celui du demandeur et alors et seulement dans ce cas-là c'est le code de ce département sélectionné que je dois prendre.
Hors ligne
pick ouic a écrit:
fais nous un export de ta dw... qu'on voit un peu la carcasse...
et ta dropdowndw affiche bien plusieurs lignes ?
yep la DDDW renvoie plusieurs lignes
voici la le code export de la DW qui contient la DDDW
$PBExportHeader$d_dem_recrut_det.srd release 10.5; datawindow(units=0 timer_interval=0 color=134217728 processing=0 HTMLDW=no print.printername="" print.documentname="" print.orientation = 0 print.margin.left = 110 print.margin.right = 110 print.margin.top = 96 print.margin.bottom = 96 print.paper.source = 0 print.paper.size = 0 print.canusedefaultprinter=yes print.prompt=no print.buttons=no print.preview.buttons=no print.cliptext=no print.overrideprintjob=no print.collate=yes print.preview.outline=yes hidegrayline=no ) header(height=0 color="536870912" ) summary(height=0 color="536870912" ) footer(height=0 color="536870912" ) detail(height=1164 color="536870912" ) table(column=(type=decimal(0) update=yes updatewhereclause=yes name=dr_id dbname="rc_demandes_recrut.dr_id" dbalias=".dr_id" ) column=(type=char(3) update=yes updatewhereclause=yes name=ute_code dbname="rc_demandes_recrut.ute_code" dbalias=".ute_code" ) column=(type=decimal(0) update=yes updatewhereclause=yes name=rd_id dbname="rc_demandes_recrut.rd_id" dbalias=".rd_id" ) column=(type=char(26) update=yes updatewhereclause=yes name=dr_libelle dbname="rc_demandes_recrut.dr_libelle" dbalias=".dr_libelle" ) column=(type=char(5) updatewhereclause=yes name=demandeur dbname="rc_acces_dem_rec.demandeur" dbalias=".demandeur" ) column=(type=char(0) updatewhereclause=yes name=dir_demandeur dbname="dir_demandeur" ) column=(type=char(0) updatewhereclause=yes name=dprh_soc dbname="dprh_soc" ) column=(type=char(0) updatewhereclause=yes name=dprh_ute dbname="dprh_ute" ) column=(type=char(5) update=yes updatewhereclause=yes name=dr_res_crea dbname="rc_demandes_recrut.dr_res_crea" dbalias=".dr_res_crea" ) column=(type=datetime update=yes updatewhereclause=yes name=dr_dt_crea dbname="rc_demandes_recrut.dr_dt_crea" dbalias=".dr_dt_crea" ) column=(type=char(5) update=yes updatewhereclause=yes name=dr_res_maj dbname="rc_demandes_recrut.dr_res_maj" dbalias=".dr_res_maj" ) column=(type=datetime update=yes updatewhereclause=yes name=dr_dd_maj dbname="rc_demandes_recrut.dr_dd_maj" dbalias=".dr_dd_maj" ) column=(type=char(26) updatewhereclause=yes name=rc_depts_rd_libel_fr dbname="rc_depts.rd_libel_fr" dbalias=".rd_libel_fr" ) column=(type=char(26) updatewhereclause=yes name=rc_depts_rd_libel_nl dbname="rc_depts.rd_libel_nl" dbalias=".rd_libel_nl" ) retrieve=" SELECT ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"DR_ID~", ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"UTE_CODE~", ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"RD_ID~", ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"DR_LIBELLE~", ~"DPRH~".~"RC_ACCES_DEM_REC~".~"MPS_INITIALES~" as demandeur, '' as dir_demandeur, '' as dprh_soc, '' as dprh_ute, ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"DR_RES_CREA~", ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"DR_DT_CREA~", ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"DR_RES_MAJ~", ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"DR_DD_MAJ~", ~"DPRH~".~"RC_DEPTS~".~"RD_LIBEL_FR~", ~"DPRH~".~"RC_DEPTS~".~"RD_LIBEL_NL~" FROM ~"DPRH~".~"RC_DEMANDES_RECRUT~", ~"DPRH~".~"RC_DEPTS~", ~"DPRH~".~"RC_ACCES_DEM_REC~", ~"GROUPE~".~"SG_MP_SIGNA~" WHERE ( DPRH.rc_acces_dem_rec.mps_initiales = GROUPE.sg_mp_signa.mps_initiales (+)) and ( ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"RD_ID~" = ~"DPRH~".~"RC_DEPTS~".~"RD_ID~" ) and ( ~"DPRH~".~"RC_DEMANDES_RECRUT~".~"DR_ID~" = ~"DPRH~".~"RC_ACCES_DEM_REC~".~"DR_ID~" ) " ) line(band=detail x1="23" y1="924" x2="1769" y2="924" name=l_1 visible="1" pen.style="0" pen.width="5" pen.color="8388608" background.mode="2" background.color="1073741824" ) text(band=detail alignment="1" text="Resp. DPRH Soc : " border="0" color="33554432" x="165" y="660" height="52" width="485" html.valueishtml="0" name=t_3 visible="1" font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) text(band=detail alignment="1" text="Dept demandeur:" border="0" color="33554432" x="187" y="800" height="52" width="462" html.valueishtml="0" name=rd_id_t visible="1" font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) text(band=detail alignment="1" text="Contact DPRH UTE : " border="0" color="33554432" x="105" y="532" height="52" width="544" html.valueishtml="0" name=t_4 visible="1" font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) text(band=detail alignment="1" text="Direction Demandeur :" border="0" color="33554432" x="50" y="404" height="52" width="599" html.valueishtml="0" name=t_2 visible="1" font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) text(band=detail alignment="1" text="Demandeur :" border="0" color="33554432" x="302" y="276" height="52" width="347" html.valueishtml="0" name=t_1 visible="1" font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) text(band=detail alignment="1" text="Libellé:" border="0" color="33554432" x="311" y="148" height="52" width="338" html.valueishtml="0" name=dr_libelle_t visible="1" font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) text(band=detail alignment="1" text="N°:" border="0" color="33554432" x="311" y="20" height="52" width="338" html.valueishtml="0" name=dr_id_t visible="1" font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) column(band=detail id=8 alignment="0" tabsequence=120 border="5" color="33554432" x="681" y="532" height="56" width="965" format="[general]" html.valueishtml="0" name=dprh_ute visible="1" dddw.name=d_ddw_utilisateurs dddw.displaycolumn=nom dddw.datacolumn=initiales dddw.percentwidth=0 dddw.lines=0 dddw.limit=0 dddw.allowedit=no dddw.useasborder=yes dddw.case=any dddw.vscrollbar=yes font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="16776960" ) column(band=detail id=1 alignment="1" tabsequence=10 border="5" color="33554432" x="681" y="20" height="56" width="329" format="[general]" html.valueishtml="0" name=dr_id visible="1" edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="16776960" ) text(band=detail alignment="1" text="Création:" border="0" color="8388608" x="32" y="960" height="52" width="274" html.valueishtml="0" name=dr_res_crea_t visible="1" font.face="Tahoma" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" font.italic="1" background.mode="1" background.color="536870912" ) column(band=detail id=9 alignment="0" tabsequence=50 border="0" color="8388608" x="343" y="960" height="52" width="165" format="[general]" html.valueishtml="0" name=dr_res_crea visible="1" edit.limit=5 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes font.face="Tahoma" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) column(band=detail id=10 alignment="0" tabsequence=60 border="0" color="8388608" x="544" y="960" height="52" width="288" format="dd/mm/yyyy" html.valueishtml="0" name=dr_dt_crea visible="1" edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes font.face="Tahoma" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) text(band=detail alignment="1" text="Modification:" border="0" color="8388608" x="850" y="960" height="52" width="338" html.valueishtml="0" name=dr_res_maj_t visible="1" font.face="Tahoma" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" font.italic="1" background.mode="1" background.color="536870912" ) column(band=detail id=11 alignment="0" tabsequence=70 border="0" color="8388608" x="1234" y="960" height="52" width="165" format="[general]" html.valueishtml="0" name=dr_res_maj visible="1" edit.limit=5 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes font.face="Tahoma" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) column(band=detail id=12 alignment="0" tabsequence=80 border="0" color="8388608" x="1440" y="960" height="52" width="288" format="dd/mm/yyyy" html.valueishtml="0" name=dr_dd_maj visible="1" edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes font.face="Tahoma" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) column(band=detail id=7 alignment="0" tabsequence=110 border="5" color="33554432" x="686" y="660" height="56" width="965" format="[general]" html.valueishtml="0" name=dprh_soc visible="1" dddw.name=d_ddw_paramgen_dprhsoc dddw.displaycolumn=compute_1 dddw.datacolumn=pg_dprh_soc_initiales dddw.percentwidth=120 dddw.lines=0 dddw.limit=0 dddw.allowedit=no dddw.useasborder=yes dddw.case=any font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="16776960" ) column(band=detail id=13 alignment="0" tabsequence=140 border="5" color="33554432" x="686" y="804" height="56" width="704" html.valueishtml="0" name=rc_depts_rd_libel_fr visible="1" dddw.name=d_ddw_depts dddw.displaycolumn=rd_libel_fr dddw.datacolumn=rd_id dddw.percentwidth=120 dddw.lines=0 dddw.limit=0 dddw.allowedit=yes dddw.useasborder=yes dddw.case=any dddw.vscrollbar=yes font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="16776960" ) column(band=detail id=4 alignment="0" tabsequence=40 border="5" color="33554432" x="681" y="148" height="56" width="887" format="[general]" html.valueishtml="0" name=dr_libelle visible="1" edit.limit=26 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="16776960" ) column(band=detail id=6 alignment="0" tabsequence=100 border="5" color="33554432" x="681" y="404" height="56" width="965" format="[general]" html.valueishtml="0" name=dir_demandeur visible="1" dddw.name=d_ddw_signal dddw.displaycolumn=compute_1 dddw.datacolumn=as_signal_si_matr dddw.percentwidth=120 dddw.lines=0 dddw.limit=0 dddw.allowedit=no dddw.useasborder=yes dddw.case=any dddw.vscrollbar=yes font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="16776960" ) column(band=detail id=5 alignment="0" tabsequence=150 border="5" color="33554432" x="681" y="280" height="56" width="965" html.valueishtml="0" name=demandeur visible="1" dddw.name=d_ddw_signal dddw.displaycolumn=compute_1 dddw.datacolumn=as_signal_si_matr dddw.percentwidth=120 dddw.lines=0 dddw.limit=0 dddw.allowedit=no dddw.useasborder=yes dddw.case=any dddw.vscrollbar=yes font.face="Verdana" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="16776960" ) htmltable(border="1" ) htmlgen(clientevents="1" clientvalidation="1" clientcomputedfields="1" clientformatting="0" clientscriptable="0" generatejavascript="1" encodeselflinkargs="1" netscapelayers="0" pagingmethod=0 generatedddwframes="1" ) xhtmlgen() cssgen(sessionspecific="0" ) xmlgen(inline="0" ) xsltgen() jsgen() export.xml(headgroups="1" includewhitespace="0" metadatatype=0 savemetadata=0 ) import.xml() export.pdf(method=0 distill.custompostscript="0" xslfop.print="0" ) export.xhtml()
Sinon je peux passer par une variable d'instance boolean, mise à true via l'itemchanged event de la zone DDDW.
C'est pas très élégant, mais un GetSelectedrow(0) qui renvoie 1 quand rien n'a été sélectionné, ça ne l'est pas non plus
Hors ligne
je ne trouve pas la colonne "depts_libel_fr"
Hors ligne
pick ouic a écrit:
je ne trouve pas la colonne "depts_libel_fr"
c'est parce qu'elle s'appelle en fait 'rc_depts_rd_libel_fr' ... moins lisible pour poser le problème ...
Hors ligne
datawindowchild ldwc_dw
dw_det.GetChild("rc_depts_rd_libel_fr",ldwc_dw)
Hors ligne
pick ouic a écrit:
Code: pb
datawindowchild ldwc_dw dw_det.GetChild("rc_depts_rd_libel_fr",ldwc_dw)
C'est ce que j'ai fait dans mon code ...
dans l'itemchanged event de la DW, je vais utiliser des variables d'instance stocker les codes.
Et j'utiliserai ces variables d'instance pour effectuer la mise à jour.
Ca ne m'explique pas pourquoi ce de GetSelectedRow(0) me renvoie 1 quand rien n'est sélectionné.
Le problème n'est pas résolu mais contourné
Hors ligne
tu as testé le code retour ? du
int_ret = dw_det.GetChild("rc_depts_rd_libel_fr",ldwc_dw)
ca renvoye quoi comme code retour ? si c'est -1, il y a une erreur...
et sinon, enleves le autoretrieve...
sinon, un autre test
mets un bouton à part... qui fera le getrow() de la ligne selectionnée.
tu selectionnes une ligne de ta dddw... et testes ensuite le bouton.
Hors ligne
au fait,
dans ta dw d_ddw_depts, quel est le type de variable de la colonne rd_id ?
Hors ligne
pick ouic a écrit:
au fait,
dans ta dw d_ddw_depts, quel est le type de variable de la colonne rd_id ?
rd_id = NUMBER
Mais je passe par la zone '*_libel_fr' pour l'affichage
Et le code
Code: pb
int_ret = dw_det.GetChild("rc_depts_rd_libel_fr",ldwc_dw)
renvoie 1 ... donc tout semble OK ...
Hors ligne
elbrizzio a écrit:
pick ouic a écrit:
au fait,
dans ta dw d_ddw_depts, quel est le type de variable de la colonne rd_id ?rd_id = NUMBER
Mais je passe par la zone '*_libel_fr' pour l'affichage
Et le codeCode: pb
int_ret = dw_det.GetChild("rc_depts_rd_libel_fr",ldwc_dw)renvoie 1 ... donc tout semble OK ...
le probleme vient de la...
il faut que ta colonne "rc_depts_rd_libel_fr" soit du meme type que "rd_id" .
ce qui n'est pas le cas ici.
Hors ligne
je suis d'accord qu'ils sont pas de même type,
mais je ne fais que passser la valeur de rd_id dans la DDDW dans la partie data.
en quoi cela peut-il perturber la DDDW.
Je fais ça régulièrement une DDDW qui affiche un libellé et qui récupère le code qui n'est pas de même type ...
Hors ligne
tu as essayé de changer au moins ? avant de repondre n'importe quoi !!!!!
comment un type varchar() peut il etre compatible avec un type number ?
Hors ligne
J'ai changé le rd_id par une un champs varchar() et j'ai le même comportement avec la DDDW.
Le getselectedRow() renvoie 1 sans que je sélectionne quoi que ce soit.
Est-ce que cela pourrait être dû au fait que je fait un setitem sur cette zone pour y mettre un libellé par défaut ?
(voir avant ds la discussion)
Hors ligne
pick ouic a écrit:
tu as essayé de changer au moins ? avant de repondre n'importe quoi !!!!!
comment un type varchar() peut il etre compatible avec un type number ?
mmuouais, c'est vrai que d'habitude ce sont des codes en varchar() qu'on recherche
bon ben mea culpa ...
mais n'empêche ça ne change rien au problème ...
Hors ligne
ca resout deja un probleme de conception...
donc, un test à faire...
tu ouvres ta fenetre, tu ne fais pas de setitem sur la dddw,
tu choisis une ligne de la dddw, et tu fais un getrow pour voir ce que ca donne...
si ca renvoye 1, c'est qu'il y a un code quelque part qui pertube...
tu as enlevé le auto retrieve ?
au pire des cas, tu crees une nouvelle fenetre de toute piece, sans heritage,
tu prends ta dw, incluant la dddw... et tu refais le test.
bon courage
Hors ligne