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






Salut à tous,
Quelle fonction pourrais-je utiliser pour savoir le type d’une colonne dans une DataWindow ?
Merci d’avance
Dernière modification par mattdamon (31-03-2009 17:31:14)
Hors ligne






ls_type = Dw.Describe(ls_colonne+".Type")
Hors ligne






Merci nico pour la réponse ainsi pour la rapidité
Hors ligne






nico a écrit:
Code: pb
ls_type = Dw.Describe(ls_colonne+".Type")
Attend attend Nico, en faisant le débouggage ls_type me retourne : column c'est quoi le problème ?
Hors ligne






Merci Nico c'est fait...je l'ai testé avec le code ci-dessous :
ls_type = Dw.Describe(ls_colonne+".ColType")
Hors ligne






Tu ne veux pas connaitre le type de d'objet ?
Autant pour moi, j'ai répondu un peu vite
Tu veux savoir si la colonne est de type caractère par exemple?
ls_type = Dw.Describe(ls_colonne+".ColType")
Hors ligne






Ben tu vois, t'as trouvé tout seul
Hors ligne






Hors ligne






Autant pour moi aussi, j'ai mis le sujet à RESOLU...
Est-ce qu'on peux pas faire le casting de String --> date, dateTime, Time
Ça marche pour les deux dernières CASE mais pas pour les trois premières.
ls_type_argument = Dw.Describe(ls_argument+".ColType") CHOOSE CASE ls_type_argument CASE "date" ld_date = Dw.GetItemDate(al_ligne, Date(ls_argument)) CASE "datet" ldt_value = Dw.GetItemDateTime(al_ligne,DateTime(ls_argument)) CASE "time" lt_value = Dw.GetItemTime(al_ligne,Time(ls_argument)) CASE "numbe", "decim" , "long", "real" ll_value = Dw.GetItemDecimal(al_ligne,Long(ls_argument)) CASE "char(" ls_value = Dw.GetItemString(al_ligne,String(ls_argument)) END CHOOSE
Dernière modification par mattdamon (31-03-2009 17:55:23)
Hors ligne














ton code il donne limite envie de
un petit effort mon gars :
primo, je pense qu'en fait ls_type_argument = Left( Dw.Describe(ls_argument+".ColType"), 5 ) (peut-être un souci de ctrl^c/ctrl^v...)
deuxio, Dw.GetItemDate(al_ligne, Date(ls_argument))
GetItemXXX prend la ligne et la colonne (nom ou n°), du coup les deux derniers cas uniquement passent à la compil, et seul le GetItemString sera juste (string(une_string)=une_string) contrairement au Dw.GetItemDecimal(al_ligne,Long(ls_argument)) qui ne te renverra jamais rien de bon car Long(le_nom_de_colonne) ne sera de loin pas égal au numéro de la colonne...
date dwcontrol.GetItemDate ( long row, string column {, DWBuffer dwbuffer , boolean originalvalue } )
date dwcontrol.GetItemDate ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } )
column
The column location of the data. The datatype of the column must be date. Column can be a column number or a column name. The column number is the number of the column as it is listed in the Column Specification view of the DataWindow painter—not necessarily the number of the column in the Design view.
tertio, ton cas ll_value = Dw.GetItemDecimal sera erroné avec un nombre décimal, car tu l'affectes à un entier (il y aura un arrondi)
Hors ligne






Bonjour,
J'ai oublié, hier, de faire la mise à jour nécessaire dans la discussion parce que mon problème a été corrigé...
Merci et bonne journée
Hors ligne