Exécuter depuis Delphi XE2 une procédure stockée SQL Server 2005 avec un paramèt

Signaler
Messages postés
8
Date d'inscription
jeudi 14 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2012
-
Bonjour ou Bonsoir

Environnement : Delphi XE2, SQL Server 2005. pour se connecter à SQL Server 2005, j'utilise ODBC avec SQL Server native Client 10.0

Je fais face à un sérieux problème de puis que nous avons acheter Delphi XE2. Je n'arrive pas à exécuter depuis Delphi XE2 une Procédure stockée avec passage de paramètres de type TDateTime. J'ai le message :"Invalid date format" (format de date invalide)

Voici une exemple de code :

function VerifieSiDossierSoldeOuPas(NumeroDossier : string; Periode : TDateTime) : Boolean;
begin
with DataVisClient do begin
[b] with Proc_VerifieSiDossierSoldeOuPas do begin
Prepared := True;
try
ParamByName('@NumeroDossier').AsString := NumeroDossier;
ParamByName('@Periode').AsDateTime := Periode;
ParamByName('@DossierNonSolde').AsBoolean := True;

if not Prepared then
Prepare;

ExecProc;

Result := ParamByName('@DossierNonSolde').AsBoolean;
except
on E:Exception do
begin
MessageBeep(0);
MessageDlg(E.Message, mtError, [mbAbort], 0);
Exit;
end;
end;
end;
end;
/bend;

Voici la procédure stockée sous SQL Server 2005


USE [PORTEFEUILLE_COMPTA]
GO
/****** Objet : StoredProcedure [dbo].[VerifieSiDossierNonSolde;1] Date de génération du script : 04/18/2012 18:10:50 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[VerifieSiDossierNonSolde;1]
(
@NumeroDossier varchar(8),
@Periode datetime,
@DossierNonSolde bit OUTPUT
)

AS

-- Recherche des comptes clients non Soldés

-- 326. 316. 345. définitive

--DROP TABLE A2


SELECT RIGHT(Cpt,7) As Dossier, Cpt, SUM(Debit)-SUM(Credit) As Montant
INTO #COMPTESOLDE
FROM ECR_DEF
WHERE ((Cpt LIKE '326.%'+@NumeroDossier) OR (Cpt LIKE '316.%'+@NumeroDossier) OR (Cpt LIKE '345.%'+@NumeroDossier) OR (Cpt LIKE '341.%'+@NumeroDossier) OR (Cpt LIKE '384.%'+@NumeroDossier) OR (Cpt LIKE '336.%'+@NumeroDossier)) AND
Moi < = @Periode
GROUP BY Cpt

UNION ALL

-- 326. 316. 345. provisoire

SELECT RIGHT(Cpt,7) As Dossier, Cpt, SUM(Debit)-SUM(Credit) As Montant
FROM ECR_PROV
WHERE ((Cpt LIKE '326.%'+@NumeroDossier) OR (Cpt LIKE '316.%'+@NumeroDossier) OR (Cpt LIKE '345.%'+@NumeroDossier) OR (Cpt LIKE '341.%'+@NumeroDossier) OR (Cpt LIKE '384.%'+@NumeroDossier) OR (Cpt LIKE '336.%'+@NumeroDossier)) AND
Moi <= @Periode
GROUP BY Cpt
IF (@@ERROR <> 0)
BEGIN
RETURN
END

SELECT Dossier, SUM(Montant) AS Montant
INTO #CPTSOLDE
FROM #COMPTESOLDE
GROUP BY Dossier

DROP TABLE #COMPTESOLDE


DELETE FROM #CPTSOLDE
WHERE Montant <= 0


IF EXISTS (SELECT Dossier
FROM #CPTSOLDE
WHERE Dossier = @NumeroDossier)

SET @DossierNonSolde = 1
ELSE
SET @DossierNonSolde = 0
/*

SELECT *
FROM #CPTSOLDE
IF @@ROWCOUNT <> 0
SET @DossierNonSolde = 1
ELSE
SET @DossierNonSolde = 0
*/
RETURN 0


Lorsque j'appelle la fonction "VerifieSiDossierSoldeOuPas", j'ai le message d'erreur <>

Quelqu'un peut il m'aider ?
fonkoufobar