/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Type større end Integer
Fra : // Overby


Dato : 24-09-02 08:26

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



 
 
Pølle (24-09-2002)
Kommentar
Fra : Pølle


Dato : 24-09-02 21:51

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



René Jensen (25-09-2002)
Kommentar
Fra : René Jensen


Dato : 25-09-02 18:57

// Overby wrote:
> 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?

F.eks. en Cardinal, som er en 32bit unsigned type. Den kan holde værdier
fra 0 til 4294967295 - ellers er det en 64bit signed type, som hedder Int64.

--
Med venlig hilsen,
René Jensen


Lars B. Dybdahl (14-10-2002)
Kommentar
Fra : Lars B. Dybdahl


Dato : 14-10-02 14:18

En integer er på 64 bit, hvis du kører dialekt 3. Det svarer til tal op til

18.446.744.074.000.000.000

Hvis du vil have større tal end dette, og har brug for dem som
autonummerering, så bliver du nok nødt til at gemme tallene som strings.

Lars.

// Overby wrote:

> 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

--

Dybdahl Engineering: http://dybdahl.dk/
Delphi brugergruppen DAPUG: http://dapug.dk/


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste