U Firebird -u postoji mogućnost kreiranja generatora, te da mu postaviš vrednost od koje će početi.
Code:
CREATE GENERATOR G_Neki_Naziv;
SET GENERATOR G_Neki_Naziv TO Neka_Vrednost;
Potom se može napraviti jedna procedura kojom ćeš ga pozivati:
Code:
SET TERM ^ ;
CREATE PROCEDURE GETGEN_Neki_Naziv
RETURNS(
NOVI_BROJ INTEGER)
AS
BEGIN
NOVI_BROJ = GEN_ID(G_Neki_Naziv, 1);
END^
SET TERM ; ^
U delphiju samo pozoveš tu proceduru,
Code:
EXECUTE PROCEDURE GETGEN_Neki_Naziv
NOVI_BROJ dodeliš npr. nekoj promenljivoj, istog tipa, potom memorišeš u tabele vrednosti promenljive. Naravno, ukoliko si uspostavio referencijalni integritet, prvo u matičnu tabelu, da je tako nazovem, potom u tabelu koja se vezuje za nju.
Vrednost generatora, ukoliko želiš da je vidiš, možeš prikazati u TEdit kontroli, npr., te promenljiva ti nije potrebna, i iz TEdit kontrole memorišeš direktno u tabele.
Code:
//spGen - komponenta preko koje pozivaš proceduru
Edit1.Text := spGen.ParamByName('NOVI_IDENT').AsString;
Na taj način znaš koji je broj dodeljen.
Možeš da koristiš i SELECT MAX(), te ako je vrednost 0 dodeliš 1, a ako je broj dodeliš broj + 1.
Someone's sitting in the shade today because someone planted a tree a long time ago.