![]() |
Datenbank: sql2000 • Zugriff über: ado
SP-ReturnValues
Hallo Leute,
ich habe folgende SP auf meiner SQL2000 laufen.
Delphi-Quellcode:
Wenn kein DB Error erfolgt, zieht die SP eine Nachricht aus der einer Tabelle NACHRICHT für den User, so dass der User einen Hinweis bekommt.CREATE PROCEDURE [SP_NEW_FIRMENTYP] ( @FIRMT_ID INT =NULL, @FIRMT_BEZ VARCHAR(30) =NULL, @FIRMT_KURZ VARCHAR(4) =NULL, @RETURN_MESSAGE VARCHAR(150) OUTPUT, @RETURN_ID INT OUTPUT ) AS SET NOCOUNT ON BEGIN TRANSACTION BEGIN IF @FIRMT_ID > 0 BEGIN UPDATE cs_Firmentyp SET FIRMT_BEZ = UPPER(LTRIM(RTRIM(@FIRMT_BEZ))), FIRMT_KURZ = UPPER(LTRIM(RTRIM(@FIRMT_KURZ))), MODIFIED = (getdate()) WHERE FIRMT_ID = @FIRMT_ID END ELSE BEGIN INSERT into cs_Firmentyp ( FIRMT_BEZ, FIRMT_KURZ, CREATED, MODIFIED, AKTIONUSER ) VALUES ( UPPER(LTRIM(RTRIM(@FIRMT_BEZ))), UPPER(LTRIM(RTRIM(@FIRMT_KURZ))), (getdate()), (getdate()), 'ADMIN' ) END END ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- IF @@error <> 0 BEGIN EXEC SP_GET_MESSAGE '101','D', @RETURN_MESSAGE OUTPUT // Nachricht: "Datensatz konnte nicht gespeichert werden" ROLLBACK TRANSACTION RETURN END ELSE BEGIN EXEC SP_GET_MESSAGE '120','D',@RETURN_MESSAGE OUTPUT //Nachricht: "Datensatz erfolgreich gespeichert!" SET @RETURN_ID = @@identity // ID: 100 COMMIT TRANSACTION RETURN END ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SET NOCOUNT OFF GO Gleichzeitig wird die ID des neuen Datensatzes zurückgegeben. Also werden 2 OUTPUT Parameter übergeben. Auf meinem DataModul habe ich eine ADO-StoredProcedure Komponente. Die Parameter sind auch alle zu sehen. Wie kann ich jetzt die Werte an die SP übergeben und als Result die Output-Parameter an zwei Labels übergeben? Mein Klick-Event: [/delphi] DM.DM_Main.sp1.Parameters.Refresh; DM.DM_Main.sp1.Parameters.ParamByName('@ID').Value := LB_ID.caption; DM.DM_Main.sp1.Parameters.ParamByName('@FIRMT_BEZ' ).Value := TB_Wert.Text; //Bezeichnung "Lieferant" DM.DM_Main.sp1.Parameters.ParamByName('@FIRMT_KURZ ').Value := TB_Wert.Text; // Kurzbezeichnung "LIEF" DM.DM_Main.SP1.Active := true; // Hier müssten jetzt die Labels mit den OUTPUT-Parametern gefüllt werden. DM.DM_Main.TB_ADRESSTYP.Active := false; DM.DM_Main.TB_ADRESSTYP.Active := true; [/delphi] Besten Dank! Oliver |
Re: SP-ReturnValues
Hallo Oliver,
Für diese Prozedur
SQL-Code:
könnte das so aussehen:
CREATE PROCEDURE [SP_NEW_FIRMENTYP]
( @FIRMT_ID INT =NULL, @FIRMT_BEZ VARCHAR(30) =NULL, @FIRMT_KURZ VARCHAR(4) =NULL, @RETURN_MESSAGE VARCHAR(150) OUTPUT, @RETURN_ID INT OUTPUT )
Delphi-Quellcode:
Grüße vom marabu
with DM.DM_Main.sp1 do begin
Parameters.ParamByName('@FIRMT_ID').Value := LB_ID.caption; Parameters.ParamByName('@FIRMT_BEZ').Value := TB_Wert.Text; //Bezeichnung "Lieferant" Parameters.ParamByName('@FIRMT_KURZ').Value := TB_Wert.Text; // Kurzbezeichnung "LIEF" ExecProc; LB_MESSAGE.Caption := Parameters.ParamValues['@RETURN_MESSAGE']; ... end; |
Re: SP-ReturnValues
:dp:
GREAT!!!!! Vielen Dank! Geht! LG Oliver |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz