Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
Je souhaite pourvoir ajouter dynamiquement un colonne à ma datawindow sans que mes données ne soient perdues.
J'ai essayé syntaxfromsql, ok pour l'ajout de la colonne, mais mes données et mon format sont perdus.
D'avance merci pour le coup de pouce
Dernière modification par djeckelle (15-07-2008 15:44:08)
Hors ligne
hello,
c'est quoi comme type de colonne ?
Hors ligne
une colonne de type char non valorisée au moment de l'insertion et qui ne correspond à aucun champ de ma requête SQL
Hors ligne
le plus simple est d'ajouter un champ virtuel dans la requête de la dw :
select ..., '' as champ_char from...
ensuite libre à toi de le modifier dans le code
Hors ligne
Oui mais comme ma requête existe déjà, je suis obligée de récupérer la syntax pour la modifier puis de faire un syntaxfromsql qui me modifie l'aspect graphique de ma datawindow et me vire les enregistrements.....
Il faut que je puisse ajouter une colonne dynamiquement , en entrer de fonction j'ai une datawindow avec ses colonnes , sa requête...en sortie il faut que je lui ai ajoutée une colonne de type string sans modifier son apparence et ses data.....
Hors ligne
Si cette colonne n'a aucun lien avec la base de données, elle va contenir quoi : une saisie utilisateur pour traitement hors base, une information fixe ou un valeur calculée par programme ? La vraie question est : dois-tu obligatoirement ajouter une colonne ? Peut-être pourrais-tu ajouter un compute ou une étiquette...
Dans tous les cas, va voir l'outil dwsyntax (onglet tool de la fenêtre new) et regarde la syntaxe (menu modify puis create et sélectionnes column, compute ou text). Le modify te permettra d'ajouter dynamiquement ton objet sans changer le look de la DW.
Hors ligne
Chrnico a écrit:
Si cette colonne n'a aucun lien avec la base de données, elle va contenir quoi : une saisie utilisateur pour traitement hors base, une information fixe ou un valeur calculée par programme ? La vraie question est : dois-tu obligatoirement ajouter une colonne ? Peut-être pourrais-tu ajouter un compute ou une étiquette...
Cette colonne va contenir des libellés fixent, j'ai pensé à la compute mais cela va m'imposer d'avoir la même valeur pour toute mes lignes.
Et quand à l'étiquette je ne connais pas ???? Mis si çà peut me servir...je vais aller voir dans l'aide PB
Chrnico a écrit:
Dans tous les cas, va voir l'outil dwsyntax (onglet tool de la fenêtre new) et regarde la syntaxe (menu modify puis create et sélectionnes column, compute ou text). Le modify te permettra d'ajouter dynamiquement ton objet sans changer le look de la DW.
J'ai déjà essayer cette méthode, le problème est que je ne dois pas être très douée car le modifiy me retourne toujours une erreur :
as_nom = "col_ddw_"+ string(ii_nbddw) // Ajout de la colonne dans la datawindow ls_create = 'create column(band=detail ' ls_create += ' id= '+ string(li_id + 1) + ' ' ls_create += ' alignment="' + "2" + '" tabsequence=32766 ' ls_create += 'border="' + "0" + '" color="' + ls_font_color + '"' //ls_create += ' x="' + as_x + '" y="'+as_y+'" height="' + as_height + '" width="' +as_width+ '" ' ls_create += 'format="' + ls_format + '" ' ls_create += 'name= ' + as_nom + ' ' ls_create += 'visible="' + '1' + '" ' ls_create += 'edit.limit=0 edit.case=any edit.autoselect=yes ' ls_create += 'edit.format="' + ls_format + '" ' ls_create += 'font.face="Arial" font.height="-8" ' ls_create += 'font.weight="400" font.family="2" font.pitch="2" font.charset="0"' ls_create += 'background.mode="'+'1'+'" background.color='+as_bkg_color+'") ' ls_err = w_export_datawindow.dw_export.Modify(ls_create)
Voici la chaîne de mon create :
create column(band=detail id= 19 alignment="2" tabsequence=32766 border="0" color="33554432"format="[General]" name= col_ddw_3 visible="1" edit.limit=0 edit.case=any edit.autoselect=yes edit.format="[General]" font.face="Arial" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0"background.mode="1" background.color=11665407")
Le message d'erreur : Line 1 Column 358: incorrect syntax.
Et en plus je suis presque certaine que je ne peux aps ajouter uen colonne qui n'est pas dans le buffer avec un id une valeur de propriété ID qui n'existe pas.
Dernière modification par djeckelle (26-06-2008 11:28:21)
Hors ligne
Bonjour,
Pour info, ton tabsequence est hors limites:
Aide PB a écrit:
A number from 0 to 32000 specifying the position of the column in the tab order. A value of 0 takes the column out of the tab order and makes it read-only
Hors ligne
J'ai rien compris au sujet, mais il te manque un guillemet que je t'ai colorié en rouge :
create column(band=detail id= 19 alignment="2" tabsequence=32766 border="0" color="33554432"format="[General]" name= col_ddw_3 visible="1" edit.limit=0 edit.case=any edit.autoselect=yes edit.format="[General]" font.face="Arial" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0"background.mode="1" background.color="11665407")
Voilà, j'espère que ç sera utile bien que j'en doute
Hors ligne
peut-être 2 espaces manquants dans :
color="33554432"format="[General]"
et
font.charset="0"background.mode="1"
Hors ligne
Ok..merci pour ces remarques mais même avec ces corrections ça ne passe toujours pas , il indique que l'erreur se trouve en fin de chaïne mais je ne voit pas ce qui cloche..
Hors ligne
Ajoutes cette ligne également pour voir
ls_create += 'font.italic="0" font.strikethrough="0" font.underline="0" '
Le mieux est de comparer avec un Edit Source de la DW s'il ne manque pas des informations.
Hors ligne
J'ai tout essayé ça ne passe pas , j'ai pourtant repris une ligne d'un edit source de ma datawindow
Hors ligne
Essaye de découper ton modify en ajoutant les instructions les unes après les autres, pour trouver laquelle pose problème.
Hors ligne
Pour info voisi ma chaine create :
create column(band=detail id=18 alignment="2" tabsequence=10border="0" color="33554432"x="1241" y="4" height="56" width="500" format="[General]" name=col_ddw_3 visible="1" edit.limit=20 edit.case=any edit.autoselect=yes edit.format="[General]" font.face="Arial" font.height="-8" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="11665407")
Si je lui passe une valeur d'ID qui n'existe pas dans la datawindow, j'ai le message d'erreur que j'ai mis dans mon message précédent. Par contre si je renseigne cette propriété avec un id qui existe, mon create passe.
Une colonne est créer, mais c'est plus une duplication qu'une création car la nouvelle colonne est identique à la colonne dont on a utilisé l'ID c'est a dire que si le coltype de la colonne 18 est long, je ne peux pas mettre de char dans ma nouvelle colonne. Et si je veux mettre à jour les données de ma nouvelle colonne celle de la colonne dont j'ai utilisé l'ID sont également modifié.
Cela confimre ce que je disais
Et en plus je suis presque certaine que je ne peux aps ajouter uen colonne qui n'est pas dans le buffer avec un id une valeur de propriété ID qui n'existe pas.
Voilà...nous sommes revenu à la case départ....
Hors ligne
l'id est attribué à une colonne du select...
le seul moyen est de rajouter un compute field... comme ca, pas besoin d'id.
compute(band=detail alignment="0" expression=" sdatawindow "border="0" color="0" x="1079" y="136" height="76" width="256" format="[GENERAL]" name=compute_1 font.face="Arial" font.height="-12" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="16777215" )
Hors ligne
Ok.. mais comment est ce que je fait pour avoir des lignes différentes???
J'ai essayé je n'ai pas réussi pour chaque ligne j'ai la même valeur et en plus je dois passer par une expression alors que je voulais simplement faire un truc genre :
for li_cpt = 1 to dw.rowcount() ma_valeur = "" //valeurs différentes en fonction de certains critères..je sui passée par un case SetItem(li_cpt,ma colonne, ma_valeur) next
que je regrette le temps ou je bossais en Delphi
Hors ligne
Djeckelle,
ça nous ramène à ce matin :
erasorz a écrit:
le plus simple est d'ajouter un champ virtuel dans la requête de la dw :
Code: sql
select ..., '' as champ_char from...
ensuite libre à toi de le modifier dans le code
Je n'ai pas compris ton objection.
Quand à "valeurs différentes en fonction de certains critères", si ces critères sont dans la DW tu dois pouvoir faire ça avec un compute
Hors ligne
Tu as mis quelle expression dans ta compute?
Parceque c'est là qu'il faut que tu codes tes tests multi-critères pour afficher le résultat attendu.
Hors ligne
Alors merci à tous car cette discussion m'a permis de bien avancer sur mon apprentissage en PB.
Au final je ne fait pas d'ajout de colonne mais j'applique un modify à ma datawindow dans la quelle je veux copier mes données.
Merci
Hors ligne
Pages: 1