Campo Autoincremento no Firebird não funciona no Delphi
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.
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
Curtidas 0
Respostas
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
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
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
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
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
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