Auto Incremento Chave Primaria (Firebird )

Delphi

IBExpert

Firebird

FireDAC

18/08/2020

Bom dia Pessoal!
Sou iniciante no Delphi, e estou com pequeno probleminha, coisa simples. Onde já fiz todas pesquisas e buscas possíveis, mais não consegui resolver o meu problema.
Estou criando um projeto no Delphi, com a aplicação Firebird 2.5, aonde no meu banco de dados eu tenho uma tabela com uma coluna chave primária (ID_Cadastro), e eu quero que esse campo ele seja auto incremento. E através de pesquisas consegui do seguinte modo: Quando eu clicar no botão gravar do cadastro ele soma o valor numérico atual do campo e acrescentar +1.
O Problema está é quando eu preciso editar o cadastro e ao clicar novamente ele irá somar +1 e assim caso eu queira acrescentar uma tabela filho vou ter problemas.
Resumindo, quero o auto incremento dessa coluna (ID_Cadastro), não modifique uma vez que inserida no banco.
Fico muito grato por uma ajuda!!!

Obs:
Ferramento de manipulação do banco de dados : IBExpert.
Gerenciador do banco: Firebird 2.5.
Componentes de conexão com o BD Delphi : Firedac = FDconection, FDTransaction, FDQuery.
Jefferson

Jefferson

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

18/08/2020

geralmente um campo auto incremento é controlado pelo banco de dados, não pela aplicação.
de qualquer modo, você cosegue saber se está incluindo ou alterando um registro, de modo que efetue o incremento somente se estiver inserindo.
if FDQuery1.State = dsInsert then
  incrementa_o_campo;





GOSTEI 0
Jefferson

Jefferson

18/08/2020

Boa noite amigo!
Na minha seguinte tabela ex: Cadastro, já criei o generator e a trigger, onde nessa tabela contém uma coluna (ID) sendo ela chave primaria. No meu manipulador de banco de dados a função está funcionando, mais na minha aplicação não, ao gravar as informações do meu banco de dados tenha uma mensagem de erro (''Fild ''ID'' must have a value'').
GOSTEI 0
Jefferson

Jefferson

18/08/2020

Consegui resolver o meu problema!!

Após ter feito o processo da criação do generator e da trigger da minha tabela, fui no meu componente FDQuery , clicar com o botão direito sobre a mesma, e em seguida (Fileds Editor) e clica no field desejado, e marcar a propriedade (Required) como false.



Obs: Uso os componentes da paleta Firedac para conectar meu banco com meu projeto.
GOSTEI 0
POSTAR