Thema: Delphi fortlaufende Nr.

Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: fortlaufende Nr.

  Alt 1. Jan 2004, 16:31
So, das Problem läßt sich am besten folgendermaßen lösen. Eine Stored Procedure ist in diesem Fall besser geeignet (ein Trigger ist zu eifrig) :

SQL-Code:
CREATE PROCEDURE RECNRSP
RETURNS (
    RECNR INTEGER)
AS
BEGIN
  EXIT;
END^

SET TERM ^ ;

ALTER PROCEDURE RECNRSP
RETURNS (
    RECNR INTEGER)
AS
DECLARE VARIABLE NEUERECNR INTEGER;
begin
  NEUERECNR = -1;
  SELECT NR FROM RECNR INTO :NEUERECNR;
  IF (NEUERECNR < 0) THEN BEGIN
    INSERT INTO RECNR (NR) VALUES (1);
    RECNR = 1;
  END
  ELSE BEGIN
    UPDATE RECNR SET NR = NR + 1;
    RECNR = NEUERECNR + 1;
  END
  suspend;
end
In Delphi habe ich nun noch diese Funktion, die die Rechn.Nr. zurückgibt:

Delphi-Quellcode:
function SucheNr : integer;
begin
  EingMod.RecNrSP.ExecProc;
  SucheNr := EingMod.RecNrSP.FieldByName ['RECNR'].AsInteger;
end;
Die Table RECNR enthält wirklich nur ein einziges integer Feld NR ! Kein Primary Key, sonst nichts. Mit obiger Konstruktion wird sie auch immer nur ein Feld beinhalten. Der Trick ist nicht schlecht. So kann man nämlich eine Unterscheidung, ob INSERT / UPDATE notwendig ist auf die Datenbank verlagern. Das Verfahren mit der lokalen Variablen läßt sich so auf alle Tabellen übertragen
Gruß
Hansa
  Mit Zitat antworten Zitat