Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Alors voila - j'ai une datawindow qui utilise une procédure stockée qui permet de notamment de faire un delete quand je lui passe 'D' en paramètre.
J'ai donc créer dans le 'Rows/Stored Procedure Update' tout ce qui va bien pour l'appelle de ma procédure en mode 'D'--> Delete.
Dans ma procédure je gère un code erreur qui sera renvoyé soit par le RETURN soit en OUTPUT.
Mon problème.
- Je delete ma row dans la datawindow dw.deleteRows(x)
- je fait l'update --> il me renvoi 1
mais le truc c que j'ai gérer un code erreur qui me permet de ne pas deleter la rows s'il elle contient des enregistrements dans d'autres tables - donc je voudrait pouvoir récupérer mon codeErreur de ma procédure pour faire un test supplémentaire après le update.
Merci de votre aide.
J'espère avoir été assez clair .
Hors ligne
il existe des evenements ou on peut recuperer le retour des messages.
dberror par exemple
Hors ligne
Mais en fait le truc - c'est qu'il n'y a pas d'erreur.
Ma procédure permet de ne pas faire le Delete si l'enregistrement fait parti d'une clé étrangère dans une autre table. Dans ce cas dans le return de ma procédure je renvoi le codeErreur -3 que je voudrait récupérer.
Hors ligne
Sinon - comment faire pour récupérer les OUTPUT de ma procédures ?
Hors ligne
dans ce cas, pourquoi ne pas faire les tests de validation avant de lancer ton delete ?
Hors ligne
parce que je veux séparer la partie metier de mon appli du coup - tout mon SQL se trouve dans mes procédure et pas dans mon appli - ce qui va rendre la maintenance plus efficace par la suite.
Donc je fait quelques tests basique dans l'appli histoire de voir si une ligne est bien sélectionner.
Ensuite dans ma datawindow je rempli les propriétés pour le 'Stored Procedure Update' afin que quand je fasse dw.update() ça me fasse ce qu'il faut.
Dans mon cas dw_update() marche correctement et me renvoie un. Or dans ma procédure j'ai 3 OUTPUTS et un RETURN qui me permet normalement de récupérer un message et un codeRetour (que je veux récupérer -- MAIS COMMENT ????) --- ce message je voudrais l'afficher dans un messagebox à la fin de l'update si tout c'est bien passé.
Dans le cas ou la ligne est bien supprimée alors : messagebox('Suppression', string(cdeRet)+' : '+msgRet)
idem si ca c'est pas bien passé (niveau de ma procédure) : messagebox('Suppression', string(cdeRet)+' : '+msgRet) ou la le message serai alors "-1 : impossible de supprimer cet enregistrement car il est référencédans une autre table".
Hors ligne
Bonjour,
Dans la proc. stoc. utilisée pour Insert/Update/Delete il faut faire un raiserror + return.
Ex. Sybase:
select @T = 'Message d'erreur à récupérer sur l'ev. dberror de la dw'
raiserror 99002 @T
return
Sur l'ev. dberror de la dw, les arguments en entrée seront:
sqldbcode = 99002
sqlerrtext = le message d'erreur (@T)
A+
Hors ligne
de quel type sont tes OUTPUT et return car j'ai eu un problème récement avec ça avec des retour de type caractère
Hors ligne