Codigo automatico e sequencial

Delphi

09/12/2004

Gostaria de fazer um cadastro de aluno. Mas não sei como fazer com que o código do aluno seja gerado automaticamento e sequencialmente.

Estou usando o bando InterBase e para fazer a conexao com o delphi uso os componentes da paleta DBExpress.

Agradeço desde já

:)


_celo

_celo

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

09/12/2004

A maneira mais fácil e simples é usar generators em conjunto ou não com triggers.


GOSTEI 0
_celo

_celo

09/12/2004

No InterBase né? Mas como faço isso?

Vc tem algum exemplo? obrigado.


GOSTEI 0
Gandalf.nho

Gandalf.nho

09/12/2004

Você deve criar um generator com o comando:
CREATE GENERATOR nome_generator.

Uma das maneiras mais comuns de associar o generator ao campo Integer que deverá ser incrementado é via trigger, assim:

CREATE TRIGGER nome_trigger FOR nome_tabela
BEFORE INSERT
AS
BEGIN
IF (NEW.nome_campo IS NULL) THEN
NEW.nome_campo = GEN_ID(nome_generator, 1);
END
END


GOSTEI 0
_celo

_celo

09/12/2004

Legal!! Fiz um Generator e funcionou muito bem, Mas so que agora acontecue mas um pequeno probleminha é pq naum sei como zerar o Generator. Alguem pode diria me ajudar?

Agradeço desde já!


GOSTEI 0
Gandalf.nho

Gandalf.nho

09/12/2004

SET GENERATOR nome_generator TO 0


GOSTEI 0
_celo

_celo

09/12/2004

Obrigado me servio bastante :)


GOSTEI 0
$grandaum$

$grandaum$

09/12/2004

tipo essa trigger naum esta rodando....eu naum manjo muito de interbase mas ajh criei o generator jah dei o valor inicial pra ele de 500 e quando mando rodar a trigger estah dando o seguinte erro

Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Statement: CREATE TRIGGER inc FOR cad_emp
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1)


GOSTEI 0
Gandalf.nho

Gandalf.nho

09/12/2004

Você colocou os END no final?


GOSTEI 0
$grandaum$

$grandaum$

09/12/2004

sim


GOSTEI 0
$grandaum$

$grandaum$

09/12/2004

CREATE TRIGGER inc FOR cad_emp
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1);
END
END


GOSTEI 0
Gandalf.nho

Gandalf.nho

09/12/2004

Tente usar o SET TERM, assim:

SET TERM ^;
CREATE TRIGGER inc FOR cad_emp
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1);
END
END ^
SET TERM ;^


GOSTEI 0
$grandaum$

$grandaum$

09/12/2004

Tente usar o SET TERM, assim: SET TERM ^; CREATE TRIGGER inc FOR cad_emp BEFORE INSERT AS BEGIN IF (NEW.cod_emp IS NULL) THEN NEW.cod_emp = GEN_ID(incrementa, 1); END END ^ SET TERM ;^




consegui resolver o problema de tanto ler esse trecho ......rh apenas tirar o 1º end do final


GOSTEI 0
$grandaum$

$grandaum$

09/12/2004

mesmo assim vlw gandalf.nho pela força ....


GOSTEI 0
Gandalf.nho

Gandalf.nho

09/12/2004

Ops, não tinha percebido que havia colocado um END a mais, desculpe...


GOSTEI 0
POSTAR