Campo Autoincremento no Firebird não funciona no Delphi

Delphi

05/02/2007

Pessoal, está acontecendo o seguinte:

Criei uma tabela no Ibexpert com um campo que será autoincremento. Também criei a trigger e o generator.

No Ibexpert funciona beleza. Ao inserir um novo registro ele implementa o valor do campo corretamente, mas na minha aplicação, quando vou salvar o registro, no post, ele fala que o campo não pode ter um valor nulo.

Por que acontece isso, já que é o banco que comanda a trigger? Por que o banco não gera o código? Quando coloco um valor qualquer para o campo e vou inserir outro registro dá Key violation.

Já tentei colocar o campo como requerido = false e nada.

O que tenho que fazer? Preciso que o banco mesmo calcule o próximo número.

Já agradeço a atenção.


Rodrigo Lima

Rodrigo Lima

Curtidas 0

Respostas

Brunolspp

Brunolspp

05/02/2007

bom não aconselho uso de trigger, vou te dar três soluções

1-larga a trigger e usa uma função independente de banco e que garante a integridade dos códigos em 100¬ e vc contraola td o processo.
pega a função retornaid no exemplo borcon 2006 e usa, a implementação está no servidor e o uso esta no cliente win32, acessa meus downloads e baixa de gratis(o link esta abixo da minha assinatura)

2-passe o vlor zero para a chave primaria no evento before post do dataset na hora da influsao

if dataset.state = dsinsert then
datasetcampochave.asinteger := 0;

ou simplesmente coloque requidred false no campo no sqldataset qdo adicionar os campos.

3-pega a minha apostila no meu link de downloads de desenvolvimento cliente/servidor com dbexpress que mostra uma forma de fazer uso de generators tb.

obs: aconselho a primeira solução, é mais profissional, mais escalavel e adaptável tb

qq coisa pode chamar


GOSTEI 0
Rodrigo Lima

Rodrigo Lima

05/02/2007

Bruno, agradeço a atenção.

Em relação as suas dicas, tenho as seguintes observações:

Gostaria muito de tentar as dicas 1 e 3, mas não consigo me cadastrar no site para fazer o download. A página está com erro. Se você pudesse passar outro link seria legal.

Em relação a dica 2: Já coloquei o campo como requerido = False. Dá erro do mesmo jeito. Já tentei colocar um valor qualquer para o campo, mas no segundo registro dá key violation. Então acho que não vai funcionar.

Valeu mesmo!

Rodrigo


GOSTEI 0
Brunolspp

Brunolspp

05/02/2007

cara

infelismente não tenho outro link de downloads, mas acabei de testar e esta td ok com o cadastro de novos associados

o code central é o maior repositorio gratuito de material sobre delphi do mundo mantido pela borland/codegear

tenta mais uma vez ai.. se tiver problema pode me chamar em pvt q tentamos resolver de outra forma


GOSTEI 0
POSTAR