Pas de problème (pb), que du PowerBuilder (PB) ^^

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.

#1 26-06-2008 08:27:53

djeckelle  
Membre Geek
Lieu: Beauvais
Date d'inscription: 02-06-2008
Messages: 38
Pépites: 3
Banque: 0

[RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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)


"Il vaut mieux échouer, apprendre et s'améliorer que ne pas avancer."
[Définition de l'échec en extrême programming d'après la revue programmez de Mai 2008]

Hors ligne

 

#2 26-06-2008 08:34:20

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

hello,
c'est quoi comme type de colonne ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 26-06-2008 08:49:53

djeckelle  
Membre Geek
Lieu: Beauvais
Date d'inscription: 02-06-2008
Messages: 38
Pépites: 3
Banque: 0

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

une colonne de type char non valorisée au moment de l'insertion et qui ne correspond à aucun champ de ma requête SQL


"Il vaut mieux échouer, apprendre et s'améliorer que ne pas avancer."
[Définition de l'échec en extrême programming d'après la revue programmez de Mai 2008]

Hors ligne

 

#4 26-06-2008 08:52:59

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

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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


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

Hors ligne

 

#5 26-06-2008 09:01:24

djeckelle  
Membre Geek
Lieu: Beauvais
Date d'inscription: 02-06-2008
Messages: 38
Pépites: 3
Banque: 0

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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.....


"Il vaut mieux échouer, apprendre et s'améliorer que ne pas avancer."
[Définition de l'échec en extrême programming d'après la revue programmez de Mai 2008]

Hors ligne

 

#6 26-06-2008 09:19:08

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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.


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#7 26-06-2008 09:59:37

djeckelle  
Membre Geek
Lieu: Beauvais
Date d'inscription: 02-06-2008
Messages: 38
Pépites: 3
Banque: 0

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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 :

Code: pb

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)


"Il vaut mieux échouer, apprendre et s'améliorer que ne pas avancer."
[Définition de l'échec en extrême programming d'après la revue programmez de Mai 2008]

Hors ligne

 

#8 26-06-2008 10:10:43

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

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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


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

Hors ligne

 

#9 26-06-2008 10:41:54

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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

 

#10 26-06-2008 10:53:10

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

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

peut-être 2 espaces manquants dans :

color="33554432"format="[General]"

et

font.charset="0"background.mode="1"


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

Hors ligne

 

#11 26-06-2008 11:40:23

djeckelle  
Membre Geek
Lieu: Beauvais
Date d'inscription: 02-06-2008
Messages: 38
Pépites: 3
Banque: 0

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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..


"Il vaut mieux échouer, apprendre et s'améliorer que ne pas avancer."
[Définition de l'échec en extrême programming d'après la revue programmez de Mai 2008]

Hors ligne

 

#12 26-06-2008 11:49:09

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

Ajoutes cette ligne également pour voir

Code: pb

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.


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#13 26-06-2008 12:21:55

djeckelle  
Membre Geek
Lieu: Beauvais
Date d'inscription: 02-06-2008
Messages: 38
Pépites: 3
Banque: 0

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

J'ai tout essayé ça ne passe pas , j'ai pourtant repris une ligne d'un edit source de ma datawindow


"Il vaut mieux échouer, apprendre et s'améliorer que ne pas avancer."
[Définition de l'échec en extrême programming d'après la revue programmez de Mai 2008]

Hors ligne

 

#14 26-06-2008 12:31:55

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

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

Essaye de découper ton modify en ajoutant les instructions les unes après les autres, pour trouver laquelle pose problème.


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

Hors ligne

 

#15 26-06-2008 12:49:30

djeckelle  
Membre Geek
Lieu: Beauvais
Date d'inscription: 02-06-2008
Messages: 38
Pépites: 3
Banque: 0

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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....


"Il vaut mieux échouer, apprendre et s'améliorer que ne pas avancer."
[Définition de l'échec en extrême programming d'après la revue programmez de Mai 2008]

Hors ligne

 

#16 26-06-2008 12:58:21

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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" )


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#17 26-06-2008 13:05:42

djeckelle  
Membre Geek
Lieu: Beauvais
Date d'inscription: 02-06-2008
Messages: 38
Pépites: 3
Banque: 0

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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 :

Code: pb

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


"Il vaut mieux échouer, apprendre et s'améliorer que ne pas avancer."
[Définition de l'échec en extrême programming d'après la revue programmez de Mai 2008]

Hors ligne

 

#18 26-06-2008 13:20:04

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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


never let people work on more than one thing at once.

Hors ligne

 

#19 26-06-2008 13:22:26

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

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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.


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

Hors ligne

 

#20 15-07-2008 15:42:12

djeckelle  
Membre Geek
Lieu: Beauvais
Date d'inscription: 02-06-2008
Messages: 38
Pépites: 3
Banque: 0

Re: [RESOLU] Insérer une colonne dynamiquement dans une DW sans perdre les données

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


"Il vaut mieux échouer, apprendre et s'améliorer que ne pas avancer."
[Définition de l'échec en extrême programming d'après la revue programmez de Mai 2008]

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22