Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
J'ai une datasore associé à une datawindow recevant un retrieve argument (cette datawindow n'est pas updatable).
Par programme je modifie la procédure SQL de lecture des données car contrainte par des choix dans une autre datawindow.
Je modifie le select afin de ne plus avoir les argument dans le select ainsi que le where
Problème lors de la réinjection de la modification à l'exécution du SetSqlSelect j'ai un retour -1 (il semble que l'on n'a pas le droit de faire un SetSqlSelect sur un DW avec argument)
Y a t-il une solution autre que passer par une DW avec procédure stockée
Mon select avant modification (issu de la DW) :
SELECT :type_risque as TYPE_RISQUE,
RISQUES.RISQ_T_PC_CODE,
TYPE_NUM_COMPTE ='C',
RISQUES.RISQ_CPT_NUM,
CASE when :type_risque = 'RI' THEN RISQINH_CODE ELSE RISQINT_CODE END AS CODE_RISQUE
FROM RISQUES
WHERE RISQUES.RISQ_ID > 0
ORDER BY RISQUES.RISQ_CPT_NUM ASC,
RISQUES.RISQ_T_PC_CODE ASC
Mon select avant réinjection : (modification par programmation du select et du where)
SELECT 'RI' as TYPE_RISQUE,
RISQUES.RISQ_T_PC_CODE ,
TYPE_NUM_COMPTE ='C',
RISQUES.RISQ_CPT_NUM ,
CASE when 'RI' = 'RI' THEN RISQINH_CODE ELSE RISQINT_CODE END AS CODE_RISQUE
FROM RISQUES WHERE ( RISQUES.RISQ_ID > 0 )
AND (LTRIM(RTRIM(RISQUES.RISQ_T_PC_CODE)) LIKE 'CEP')
AND (LTRIM(RTRIM(RISQUES.RISQ_CPT_NUM)) LIKE '071%')
ORDER BY RISQUES.RISQ_CPT_NUM ASC,
RISQUES.RISQ_T_PC_CODE ASC
Dernière modification par devsud (28-09-2010 11:09:38)
Hors ligne
Bonjour,
N'oublies pas d'utiliser les balises code=sql.
Merci d'avance.
Hors ligne
Bonjour,
Oui, le setsqlselect fonctionne dans la mesure ou il n'y a pas de retrievials arguments à la datawindow. Mais si tu modifies la requête SQL dynamiquement tu n'as plus l'utilité des retrievials arguments.
Il te suffit de définir ta datawindow avec une requête quelconque au départ sans retrievials arguments et d'appliquer le SetSQLSelect.
Hors ligne
Bonjour,
Je rejoins BUCK sur son analyse ( si on modifie la requete SQL on a plus besoin de retrieval argument )
Par contre il est possible d'effectuer la modification d'un requête avec des retrieval argument en utilisant la fonction MODIFY
exemple
dw_1.modify ( "DataWindow.Table.Select='select col1 , col2 from Table where col1 = :argument ........' " )
Hors ligne
Effectivement j'ai opté pour la solution du modify, et c'est OK
Hors ligne
Pages: 1