Après windows pour les nuls, voici PB pour les bons (ou presque).

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

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 10-07-2008 11:31:54

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

[RESOLU] Modifier la requête d'une DW ayant des arguments

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 :

Code: pb

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.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#2 10-07-2008 13:08:01

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: [RESOLU] Modifier la requête d'une DW ayant des arguments

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

 

#3 11-07-2008 10:14:53

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Modifier la requête d'une DW ayant des arguments

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:

Code: pb

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.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22