Hej Daniel
Jeg har også været ude for dette problem, hvor Integer ikke er nok.
Jeg har derfor løst problemet vha. en TTable benævnt "NrDataSet".
NrDataSet-databasen har KUN 1 record.
Den database, som NrDataSet styrer, har flere 'Alfa fields' på hver 18
karakterer.
(18 cifre det må squ' da være stort nok')
Hver 'Alfa field' er det sidste 'Autonum' som kan hentes af en anden
database.
Jeg sender så kommandoen:
LokStr:='DFL_Key';
if GetDatasetKey(LokStr, TD_Nr) then Dataset['DFL_Key']:=LokStr else
Abort;
// LokStr:String
// 'DFL_Key'=Navnet på AutoNum feltet, som jeg ønsker at få tillagt
+1
// TD_Nr er navnet på den TTable, som indeholder og administrerer
'Autonum' felterne.
function TDM.GetDatasetKey(var KeyField: String;
NrDataSet:TDataSet):Boolean;
var Hnr,Lnr:Longint;
begin
Result:=False;
I:=0;
NrDataSet.Open;
if (NrDataSet[KeyField]=Null) or (NrDataSet[KeyField]='') then begin
NrDataSet.Insert;
NrDataSet[KeyField]:='000000000000000000';
end;
Hnr:=StrToInt(Copy(NrDataSet[KeyField],1,9));
Lnr:=StrToInt(Copy(NrDataSet[KeyField],10,18));
if Lnr=999999999 then begin
inc(Hnr);
if Hnr=1000000000 then Hnr:=0;
Lnr:=0;
end else begin
inc(Lnr);
end;
if NrDataSet.state=dsBrowse then NrDataSet.Edit;
NrDataSet[KeyField]:=formatfloat('000000000',Hnr)+formatfloat('000000000',Ln
r);
NrDataSet.Post;
TBDEDataSet(NrDataSet).FlushBuffers;
KeyField:=NrDataSet[KeyField];
NrDataSet.Close;
Result:=True;
end;
PØLLE
======================
"// Overby" <danielFJERN@FJERNoverbyhansen.dk> skrev i en meddelelse
news:amp42p$2f8g$1@news.cybercity.dk...
> Jeg er ved at udvikle en database i Interbase og skal bruge en type, der
er
> større end integer. Jeg skal bruge den til autonumerering og en integer er
> ikke stor nok? Hvad kan bruges?
>
> - @ -
> Daniel Overby Hansen aka mrDO
> Find me on MSN Messenger: daniel@FJERNESoverbyhansen.dk
>
www.overbyhansen.dk
>
www.vis-logen.dk - ren morskab
>
>