Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
J'utilise la fonction CREATE afin de créer dynamiquement des datawindow (type crosstab) lors du déroulement de mon application PB, et je rencontre le problème suivant : lorsque je récupère (avec DESCRIBE) la synthaxe de ma datawindow juste après l'avoir créée, la synthaxe n'est plus la même, la position d'une colonne n'est plus la même et elle se retrouve en dernière position alors qu'elle ne l'était pas auparavant...
J'aurai aimé savoir quelle en est la cause ? si quelqu'un avait déja rencontré ce problème ?
Merci
Sand.
Hors ligne
Bonjour sand,
En quelle version de PB et de SGBD es-tu?
Pourrais-tu nous montrer ton script?
(PS: avec les balises [ code=pb ] !)
Hors ligne
Salut
Il faut aussi savoir en quelle version est ta DW
Par exemple ta DW de base est en pb 6.5 et tu la recrées en pb 8
Hors ligne
Je travaille en PB 6.5 (Build 1253) et sur SQL Server 7.
En fait dans le code il y a pas mal de choses de faite, le bout de code concerné est celui-ci :
// Test (1) ls_test = sSyntax i_dw.Create(sSyntax, sErr) if sErr <> "" Then MessageBox("Erreur Création DW", sErr) i_dw.Show() Return end if i_Dw.SetTransObject(i_dw.i_tTrans) // Test (2) ls_test = i_dw.Describe("datawindow.syntax") //Modification des attributs une fois la nouvelle DW créée ...
Lorsque je regarde les valeurs de la variable ls_test, je n'ai pas la même chose en (1) et en (2).
La synthaxe n'est pas très lisible si je le poste ici, et je ne sais pas si je peux attacher des fichiers au message si besoin ?
Sand
Hors ligne
La variable sSyntax est-elle initialisée par SyntaxFromSQL ou pas?
Hors ligne
Non, elle est récupérée avec Describe("datawindow.syntax") précédemment
Hors ligne
Il n'y a pas de modification de sSyntax entre le describe précédent et le Create dans ton script?
(du style: tu récupères la syntaxe d'une Grid et tu la modifies pour une crosstab)
Hors ligne
En fait, il s'agit d'une fenêtre qui permet de lancer l'affichage d'un état en fonction de ce que choisit un utilisateur dans une liste. Donc sur ma fenêtre j'ai un user-object dont le dataobject est chargé avec la datawindow correspondante au choix de l'utilisateur => Jusque là tout se passe bien (affichage et données correctes).
Par contre là ou ça se complique, c'est que l'utilisateur peut personnaliser son état (rendre visible ou invisible des colonnes)...et là cela met à jour la synthaxe de la datawindow qui est chargée dans le user object en fonction des choix de l'utilisateur.
J'ai mis en commentaire tout ce qui était effectué (modifications de colonnes visibles, ...) et j'ai fait le test en conservant uniquement la récupération de la synthaxe et ensuite recréant la dw : mais là j'arrive sur mon problème.
String sSyntax, sErr, ls_test sSyntax = i_dw.Describe("datawindow.syntax") i_dw.Create(sSyntax, sErr) if sErr <> "" Then MessageBox("Erreur Création DW", sErr) i_dw.Show() Return end if i_Dw.SetTransObject(i_dw.i_tTrans)
Je me demande si le fait que i_dw ne soit pas détruit ou réinitialisé avant le CREATE peut poser un problème ? (mais les données affichées par la suite sont quand même correcte).
Je vais continuer à regarder dans le détail ce que tu m'as indiqué foon, mais comme je met à jour la même dw, il n'y a pas de problème de style grid / crosstab...peut être plutôt au niveau du user-object.
Merci
Sand
Hors ligne
Pages: 1