Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Windows 7
PB 12.5.2
Sybase ASE 15
Le code fonctionnait auparavant, la dropdown s'ouvrait bien.
Depuis le passage à ASE 15 cela ne marche plus. J'ai modifié le code pour intercepter le code retour du getchild et j'ai -1.
Avez-vous une solution ?
L_sSyntaxe = 'select ' + is_dercolonneedit + ' from dbo.' //On ne prend que la première table de la liste L_lPos = Pos(is_dertable, ',') if L_lPos > 0 then is_dertable = Left(is_dertable, L_lPos - 1) end if L_sSyntaxe += is_dertable //On construit la DW L_sStyle = "Style(Type=Form )" + & "Column(Border=5 Color=0 font.face='Times New Roman' font.weight=400 Font.Family=2 Font.Height=-10 ) " + & "Datawindow(Color=79741120 ) " SQLCA.AutoCommit = True L_sDW = SQLCA.SyntaxFromSQL (L_sSyntaxe, L_sStyle, L_sError) SQLCA.AutoCommit = False if Len(L_sError) > 0 then f_vmessagedetail("Critère","Erreur_creation",3, L_sError) return False end if dw_getvaleur.Create(L_sDW, L_sError) if Len(L_sError) > 0 then f_vmessagedetail("Critère","Erreur_creation",3, L_sError) return False end if //On fait le retrieve si Dawindow Child si il y a des arguments if L_iType = 5 then dw_getvaleur.GetChild(is_dercolonneedit,L_dwc) L_dwc.SetTransObject(SQLCA) Ll = L_dwc.Retrieve(uo_organisme.i_scode_organisme, uo_organisme.i_scodeanneeuniv) end if
Dernière modification par lh (11-05-2016 06:12:11)
Hors ligne
Mmh. Le Getchild n'a pas directement d'interaction avec la base mais avec la datawindow elle-même.
F1 a écrit:
Returns 1 if it succeeds and -1 if an error occurs—for example, if the child object does not exist.
Ce code a fait l'objet d'un refactoring ? Le getchild() se fait sur la colonne qui est utilisée par le select qui sert à fabriquer la DW dynamiquement, mais je ne vois pas où on explique à PB que la colonne est une DDDW (le style prédéfini pour le SyntaxFromSQL() indique un type simple).
Vous avez des styles prédéfinis dans pbcatcol / pbcatedt ?
Hors ligne
Non le code n'a pas changé depuis 2011.
Quel genre de trace (Messagebox) puis-je mettre pour mieux comprendre ce qui ne marche plus ?
C'est une fenêtre assez complexe qui permet de paramétrer différents critères d'extraction.
Hors ligne
Bonjour,
As tu vérifiés dans la syntaxe de la datawindow, comment est construit le nom de ta colonne (is_dercolonneedit) ?
Hors ligne
Bonjour,
étant donnés que tu construis la syntaxe de la datawindow dynamiquement, le lien pour ta dropdowndatawindow doit provenir des extended attributs. Peut-être ceux ci ne sont pas dans la base de données ASE 15 ?
Hors ligne
En effet j'ai trouvé dans les extended attributs un style qui correspond à la DDDW que je voudrais affiché. Il faut donc que je modifie le style, mais j'ai du mal avec la syntaxe suivante : dw_getvaleur.Modify(is_dercolonneedit + ".edit.style = produit_peda_organisme_annee") //is_decolonneedit contient le nom de la colonne et produit_peda_organisme_annee est le nom du style défini dans les extended attributs
Cela ne change rien...
Hors ligne
tu peux aussi exporter les attributs d'une base vers l'autres:
Dans le database painter, depuis la connection avant migration :
- aller sur Tables
- faire clique droit : show system tables (doit être coché)
- faire un clique droit refresh si les tables pbcat* ne sont pas visibles
- sur chaque table faire clique droit / Export Syntax : cela prépare les create table/index et insert into qui vont bien.
Hors ligne
Merci. Ca fonctionne à nouveau.
Les Edit Styles dans les Extended Attributes ont bien été migré.
Par contre en vérifiant certaines colonnes j'ai constaté qu'il n'y avait plus de style associé, d'où le GetChild qui ne fonctionnait plus puisque ma colonne n'était plus associé à une DDDW. J'ai mis le style qui va bien et ça marche.
En faisant un select sur la table pcatcol j'ai l'impression de voir des doublons :
Ne devrais-je pas trouver une ligne unique par pbc_tnam + pbccnam ?
Ainsi j'ai 2 lignes dans ma table concernant la même colonne d'une même table. Par contre l'une fait référence à Edit style et pas l'autre.
Est-ce un effet de la migration ?
Cette dernière remonte à décembre 2015 et nous n'avons pas moyen de vérifier le contenu de la table avant migration.
L'essentiel c'est que cela fonctionne à nouveau.
Hors ligne