Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Umstellung von Paradox auf FB 2.0

  Alt 22. Feb 2007, 11:37
Hallo,

1. die Bde läuft immer noch unter Vista.
2. Hole dir die neue ID vor dem Speichern über eine Stored Procedure

Suche hier entweder nach Generator oder schaue mal hier
http://www.ibphoenix.com/main.nfs?a=...&page=ibp_skip

Suchwort "key generators"

Kleines Bsp.
Tabelle Personal

SQL-Code:
create generator gen_Personal;


CREATE PROCEDURE PERSONAL_NEWID
RETURNS (NEWID INTEGER)
AS
begin
  newid=gen_id(gen_PERSONAL,1);
end
Und hier der passende Delphi-Code (BDE).
die Methode geht davon aus, dass die SP und der
Generator einer bestimmten Syntax folgen:
Generator: gen_TableName
SP: TableName_NewId

Damit kann die Methode für alle Tabellen verwendet werden.

Delphi-Quellcode:

function Table_GetNewId__DB(const theDataBaseName, theTableName: String;
  var theNewId: Longint; var theErrorStr: String): Boolean;
var
  SP: TStoredProc;
begin
  Result:= False;

  theNewId:= -1;
  theErrorStr:= '';

  try
    SP:= TStoredProc.Create(NIL);
    try
      SP.DataBaseName:= theDataBaseName;
      SP.StoredProcName:= UpperCase(theTableName)+'_NEWID';
      SP.ExecProc;

      theNewId:= StrToInt(SP.Params[0].AsString);

      Result:= True;
    finally
      SP.Free;
    end;
  except
    on E: Exception do
    begin
      theErrorStr:= E.message;
    end;
  end;
end; { Table_GetNewId__DB }
Frag mich jetzt nicht, warum dort
StrToInt(SP.Params[0].AsString); statt nur AsString steht,
hatte damals was mit 16bit BDE zu tun (jaja, gab es mal )

Heiko
Heiko
  Mit Zitat antworten Zitat