Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Je sais pas comment ajouter dynamiquement une nouvelle colonne dans une datawindow (external) qui n'a pas d'une requete derrière?
J'ai posé cette question par ce que je veux créer une DW dynamique avec les colonnes souhaitées.
Cette DW doit être générale, pour servir de contenir des données à exporter...
Quelqu'un a une idée ?
Dernière modification par mattdamon (06-01-2011 09:52:57)
Hors ligne
Je vois que le seul moyen est d'utiliser le describe et le Syntaxfromsql pour créer la nouvelle DW
Hors ligne
Salut,
Regarde le message suivant tu devrais trouver ce que tu cherche.
http://pbadonf.fr/forum/viewtopic.php?pid=19627#p19627
Hors ligne
Bonjour,
Je ne comprend pas pourquoi la create ça fonctionne pas avec la syntaxe ci-dessous :
remarque : la create ça marche avec la datastore.
datawindow ldw_datawindow ldw_datawindow = Create datawindow ll_cod_ret1 = ldw_datawindow.create(ls_syntaxe , ls_erreur) ll_cod_ret2 = ldw_datawindow.setTransObject (SQLCA)
ll_cod_ret1 me retourne -1 !!!!
release 11.5; datawindow(units=0 timer_interval=0 color=1073741824 processing=0 print.documentname="" print.orientation=0 print.margin.left=0 print.margin.right=0 print.margin.top=0 print.margin.bottom=0 print.paper.size=0 print.paper.source=0 selected.mouse=no) header(height=69 color="536870912" ) summary(height=5 color="536870912" ) footer(height=1 color="536870912" ) detail(height=65 color="536870912" ) table ( column=(type= char(12) updatewhereclause=yes name= A dbname= "A") column=(type= char(30) updatewhereclause=yes name= B dbname= "B") column=(type= char(10) updatewhereclause=yes name= C dbname= "C") column=(type= char(10) updatewhereclause=yes name= D dbname= "D") column=(type= char(3) updatewhereclause=yes name= E dbname= "E") column=(type= char(3) updatewhereclause=yes name= F dbname= "F") column=(type= number updatewhereclause=yes name= G dbname= " G") column=(type= number updatewhereclause=yes name= H dbname= " H") column=(type= number updatewhereclause=yes name= I dbname= " I") column=(type= number updatewhereclause=yes name= K dbname= " K") column=(type= number updatewhereclause=yes name= L dbname= " L") column=(type= char(50) updatewhereclause=yes name= M dbname= " M") column=(type= char(50) updatewhereclause=yes name= N dbname= " N") )
Dernière modification par mattdamon (05-01-2011 10:13:27)
Hors ligne
AMHA ça vient du premier create. Create ne peut être utilisé que pour les objets non visuels.
Essaie create(ls_syntaxe , ls_erreur) sur un contrôle dw existant
Hors ligne
shahin a écrit:
AMHA ça vient du premier create. Create ne peut être utilisé que pour les objets non visuels.
Essaie create(ls_syntaxe , ls_erreur) sur un contrôle dw existant
J'ai pas compris que ce que tu veux dire excatement Shahin... mais comment je peux utiliser un controle dw existant par ce que je suis en train d'écrire dans une fonction d'un user object non visual !!!
Merci pour ton retour...
Hors ligne
Salut Matt,
Tu as tout à fait raison. Je dis de faire un test avec une fenêtre et une DW de tests, juste pur voir si ça vient de la syntaxe ou pas.
Hors ligne
shahin a écrit:
Salut Matt,
Tu as tout à fait raison. Je dis de faire un test avec une fenêtre et une DW de tests, juste pur voir si ça vient de la syntaxe ou pas.
Effectivement, j'ai testé avec une dw existante et ca fonctionne bien, mais avec la datawindow crée dynamiquement ne ça marche pas.
Donc il ne s'agit pas d'un problème de syntaxe mais de la :
datawindow ldw_datawindow
ldw_datawindow = Create datawindow
Donc, c'est quoi la solution d'après vous pour créer la syntaxe pour une datawindow dynamique dans un user object non visual !!!!!
Merci d'avance !
Dernière modification par mattdamon (05-01-2011 13:50:05)
Hors ligne
salut,
deux options :
1) soit tu peux passer par une datastore, et donc un "Create datastore" suffit
2) soit tu dois absolument créer une datawindow dynamiquement, et là il te faut le support sur lequel le créer : une référence à un objet Window valide. Ainsi après ton "create datawindow", il faudra faire un "lw_parent.OpenUserObject"
Hors ligne
xlat a écrit:
salut,
deux options :
1) soit tu peux passer par une datastore, et donc un "Create datastore" suffit
2) soit tu dois absolument créer une datawindow dynamiquement, et là il te faut le support sur lequel le créer : une référence à un objet Window valide. Ainsi après ton "create datawindow", il faudra faire un "lw_parent.OpenUserObject"
Merci xlat pour ta réponse rapide.
En fait, pour la solution 1, je l'ai testé mais il n'a pas donné une bonne résultat pour mon cas....
Pour la solution N°2, tu peux me donner un exemple de comment le faire ?
Dernière modification par mattdamon (05-01-2011 15:00:02)
Hors ligne
un exemple pur un statictext, mais ca doit être la même chose avec une datawindow (je n'ai pas retrouvé de code...)
long ll_x = 4, ll_y = 4, ll_h = 4, ll_w = 4 i_sts_parent = aw_win i_st_top = create statictext aw_win.Openuserobject( i_st_top, ado.x - ll_x, ado.y - ll_y) i_st_top.width = ado.width + 2 * ll_x i_st_top.height = ll_h i_st_top.border = true i_st_top.bordercolor = rgb( 255, 0, 0 ) i_st_top.borderstyle = StyleBox! i_st_top.visible = true
Hors ligne
xlat a écrit:
un exemple pur un statictext, mais ca doit être la même chose avec une datawindow (je n'ai pas retrouvé de code...)
Code: pb
long ll_x = 4, ll_y = 4, ll_h = 4, ll_w = 4 i_sts_parent = aw_win i_st_top = create statictext aw_win.Openuserobject( i_st_top, ado.x - ll_x, ado.y - ll_y) i_st_top.width = ado.width + 2 * ll_x i_st_top.height = ll_h i_st_top.border = true i_st_top.bordercolor = rgb( 255, 0, 0 ) i_st_top.borderstyle = StyleBox! i_st_top.visible = true
Désolé, l'idée et exemple pas clair...
Hors ligne
Je voulais surcharger une datawindow existante dans une autre PBL pour l'utiliser dans ma fonction de userobject non visual.
Pour se faire, dans le user object je fais comme suit pour pouvoir utiliser ldw_datawindow :
w_fenetre.wf_surcharge_dw(ldw_datawindow)
Je comprend pas pourquoi ca marche pas ...
Hors ligne
Une idée SVP, c'est extrêmement urgent
Hors ligne
Désolé, solution abondonnée.
En fin, j'utise la datastore au lieu de la datawindow et ça fonctionne bien.
Ce topic a une relation avec :
http://pbadonf.fr/forum/viewtopic.php?pid=27938#p27938
Donc c'est résolu aussi.
Dernière modification par mattdamon (06-01-2011 09:52:03)
Hors ligne