Auto Incremento Chave Primaria (Firebird )

18/08/2020

0

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

Responder

Posts

18/08/2020

Emerson Nascimento

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;





Responder

19/08/2020

Jefferson

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'').
Responder

19/08/2020

Jefferson

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.
Responder

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

Aceitar