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