Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SP-ReturnValues (https://www.delphipraxis.net/49007-sp-returnvalues.html)

testoli 4. Jul 2005 10:13

Datenbank: sql2000 • Zugriff über: ado

SP-ReturnValues
 
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

marabu 4. Jul 2005 10:54

Re: SP-ReturnValues
 
Hallo Oliver,

Für diese Prozedur
SQL-Code:
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   
)
könnte das so aussehen:
Delphi-Quellcode:
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;
Grüße vom marabu

testoli 4. Jul 2005 13:42

Re: SP-ReturnValues
 
:dp:

GREAT!!!!! Vielen Dank! Geht!

LG
Oliver


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz