Bonjour,
J'en appel à vous car après avoir rechercher dans la FAQ avec les mots clé ci-dessous et dans le forum qui m'a fournit des réponses mais pas celles que j'attendais, je vous explique:
J'ai une procédure stockée en SQL SERVEUR version 8.00.194:
Cette procédure retourne une variable avec le code d'un client s'il existe dans la base sinon il retourne 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 CREATE PROCEDURE exist_client @nom char(15), @prenom char(15) AS DECLARE @exist INT SELECT @exist = (SELECT Num FROM client WHERE Nom=@Nom AND Prénom=@prenom) IF @exist is NULL begin RETURN @exist = O end else begin RETURN @exist end
En delphi je fais appel à cette procédure avec un objet TADOStoredProc :
(pour le code suivant je me suis inspiré d'une syntaxe sur une Pti je ne suis absolument pas sur qu'il soit bon)
et enfin l'appel de la procédure ( au passage je n'ai pas oublié de configurer les propriétés connectionString et procédureName de l'objet TADOStoredProc par la connection a sqlserveur et le nom de la procédure) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function TMDD.exist_client(nom,prenom:String) : integer; begin with Procedure_Stockee.parameters do //Procedure stockee est le nom donné à l'objet TADOStoredProc begin ParamByName('@RETURN_VALUE').Value; ParamByName('@nom').Value:=nom; ParamByName('@prenom').Value:=prenom; result:=ParamByName('@RETURN_VALUE').Value; Procedure_Stockee.ExecProc; end end;
delphi m'annonce une erreur "correction de type variant incorrecte" lors de l'appel de la procédure (ou plutot fonction)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 codeclient:integer; codeclient:=MDD.exist_client(nomclient,prenomclient);
J'ai essayé des inttostr et des strtoint mais bon sans succès et peut-être pas au bon endroit
Une idée ? Merci
Partager