Hallo Leute,
ich habe folgende SP auf meiner SQL2000 laufen.
Delphi-Quellcode:
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
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.
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