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








Bonjour à tous,
J'ai une datawindow qui attend 12 arguments. Néanmoins, dynamiquement, j'ai besoin
de modifier son SELECT et de rajouter 3 conditions supplémentaires. J'ai bien fait un
GetSQLSelect pour récupérer le SELECT original et ensuite lui rajouter les 3 conditions
supplémentaires via un SetSQLSelect, mais PB ignore les 3 conditions rajoutées (en
faisant un GetSQLSelect, les 3 conditions supplémentaires sont effectivement ignorées).
J'ai donc décidé de modifier la requête via le code suivant :
ls_mod_select = "Datawindow.Table.Select=~"" + ls_new_sql + "~""
Dans la variable ls_new_sql, j'ai redéfini complètement ma requête, qui se présente alors
comme je le souhaite. J'ai tester le contenu de la variable ls_mod_select sous SQL*Plus
afin de valider que la syntaxe de la requête est correcte (le Modify ne vérifie pas la
syntaxe). Ensuite, ce que je fait c'est un Retrieve sans arguments, car ils ont tous été
définie dynamiquement, cependant, lors du Retrieve de la datawindow, PowerBuilder
semble garder en mémoire les arguments définie pour la requête d'origine. Comment
puis-je m'affranchir de ces arguments sans devoir refaire une datawindow identique
mais sans arguments ?
Par avance, merci.
Doctor Z.

Hors ligne
Tu lui fournis des arguments bidons et puis tu déroutes la requête dans SqlPevieuw() en retirant la clause where.
Sinon j'ai donné une astuce pour spécifier un nombre d'arguments variables ce qui peut éventuellement être utile dans ton cas.
Dernière modification par Dadone (10-07-2008 13:15:04)
Hors ligne








Bonjour,
J'ai effectivement consulté votre astuce dans la section idoine, mais j'ai entre temps trouvé une autre solution
que je vais expliqué ci-dessous, elle n'est pas aussi sofistiqué que la votre, mais fonctionne aussi (je l'ai
implémenté avant de consulter l'astuce dont vous faites mention).
J'ai une datawindow avec SELECT pour lequel j'ai 12 arguments. Or, j'avais besoin de rajouter 3 where clause
supplémentaires en fonction d'un cas particulier et donc aussi 3 arguments supplémentaires. Ce que j'ai fait,
c'est que dans le dataobject j'ai effectivement rajouté les 3 arguments supplémentaires, sans pour autant les
utiliser dans la requête de celui-ci, ce que PowerBuilder m'indique par un message du genre : "tu as défini les
paramètres suivants, mais tu ne les utilises pas, veux-tu continuer tout de même ?".
Ensuite, dans le code, je construis la requête que je veux avoir avec les 3 where clause supplémentaires que
je garde dans une variable de type string (ls_sql). Après, j'écrase la requête originelle du dataobject par celui
contenu dans ls_sql que je viens de constuire par le biais de l'instruction suivante:
dddw.Modify ("Datawindow.Table.Select=~"" + ls_sql + "~"")
Enfin, dans le retrieve finale, je dois passer à vide les 3 arguments supplémentaires, de manière à ce qu'il me
fasse le retrieve correctement.
Ce n'est pas très élégant comme méthode, mais les résultats obtenus sont identiques à ceux que j'obtiens en
interrogeant à la main la base de données.
En tout cas, merci Pascal pour votre aide, la prochaine fois que j'aurai à traiter un cas similaire, je vais suivre
votre méthode.
Merci.
Doctor Z.

Hors ligne
Pages: 1