Fórum Codigo automatico e sequencial #261284

09/12/2004

0

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

Responder

Posts

09/12/2004

Gandalf.nho

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


Responder

Gostei + 0

09/12/2004

_celo

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

Vc tem algum exemplo? obrigado.


Responder

Gostei + 0

10/12/2004

Gandalf.nho

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


Responder

Gostei + 0

11/12/2004

_celo

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


Responder

Gostei + 0

11/12/2004

Gandalf.nho

SET GENERATOR nome_generator TO 0


Responder

Gostei + 0

12/12/2004

_celo

Obrigado me servio bastante :)


Responder

Gostei + 0

15/12/2004

$grandaum$

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)


Responder

Gostei + 0

15/12/2004

Gandalf.nho

Você colocou os END no final?


Responder

Gostei + 0

15/12/2004

$grandaum$

sim


Responder

Gostei + 0

15/12/2004

$grandaum$

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


Responder

Gostei + 0

15/12/2004

Gandalf.nho

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


Responder

Gostei + 0

16/12/2004

$grandaum$

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


Responder

Gostei + 0

16/12/2004

$grandaum$

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


Responder

Gostei + 0

16/12/2004

Gandalf.nho

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar