Exécuter depuis Delphi XE2 une procédure stockée SQL Server 2005 avec un paramèt
cs_fonkou
Messages postés8Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention18 avril 2012
-
18 avril 2012 à 19:16
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
A voir également:
Exécuter depuis Delphi XE2 une procédure stockée SQL Server 2005 avec un paramèt