Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Barbosa

[Resolvido] Auto-increment

Recommended Posts

Galera, comecei hj a estudar o firebird e IB expert. Já consegui criar o BD e as tabelas no IB expert.

No IB expert tem uma função chamada Generators, onde posso indicar os campos que são AutoIncrement, então peguei no campo CODIGO e coloquei-o como primary key e autoincrement.

No delphi para fazer a conexão com o BD, comecei a usar os componentes da palheta DBExpress.

Já que na tabela o campo CODIGO está como AutoIncrement eu preciso fazer uma rotina no delphi para ele auto-numerar ?

Eu tentei fazer direto e está dando erro, o código no delphi é esse:

 

 
       Begin // 1
          DM.QRY_usuario.Close;
          DM.QRY_usuario.SQL.Clear;
          DM.QRY_usuario.SQL.Add('INSERT INTO login (usuario, senha) VALUES ('+QuotedStr(eUsuario.Text)+','+QuotedStr(eSenha.Text)+')');
          DM.QRY_usuario.ExecSQL;

          ShowMessage('Usuário Cadastrado com Sucesso !!!');
          eUsuario.Clear;
          eSenha.Clear;
       end  // Begin1

 

Eu estav usando o ACCESS e com esse código eu conseguia gerar o código autoincrement.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo,

 

A pricipio não é necessário que você crie rotina para auto-inumerar, mas, caso você precise gerar manualmente você pode colocar o código abaixo :

 

with Dm.Qry_Usuario do

begin

close;

sql.clear;

sql.add('Insert into LOGIN (codigo, usuario, senha)' );

sql.add('Values(select gen_id(generator,1) from rdb$database), '+QuotedStr(eUsuario.Text)+','+QuotedStr(eSenha.Text)+')');

ExecSQL;

end;

 

O valor em negrico é adição para o auto-encremento, mas, VOLTO A DIZER, não seria necessário fazer desta forma o banco deverá de se encarregar de realizar o auto-encremento;

 

Será que você tem alguma mensagem, que detalhe um pouco mais ?

 

Caro Amigo,

 

generator = ao Nome do seu Generetor;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega você só precisa auto - incrementar dentro do delphi se for usar esse campo para algum tipo de formatação, tal como formatfloat(0001) um exemplo, se não o próprio banco se encarrega de executar essa função, o que diga se de passagem é uma mão na roda, da alguns problemas se você trabalhar com clientdataset mas no geral é muito boa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem de erro é : VALIDATION ERROR FOR COLUMN ID_LOGIN, VALUE "******"

 

No generation do IB Expert está assim: ID_LOGIN, VALUE 1.

 

Você tem a mensagem de erro que é gerado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, tem duas maneiras de fazer isso no ibexpert, via wizard, quando você vai criar o campo você define que ele vai ser auto-incremento, criando um generator e depois cria uma trigger para fazer esse processo

ou pode fazer na mão

CREATE GENERATOR NOME_GENERATOR ex.: GEN_LOGIN_ID_LOGIN;
CREATE TRIGGER NOME_TRIGGER FOR LOGIN
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 IF (NEW.ID_LOGIN IS NULL) THEN
   NEW.ID_LOGIN = GEN_ID(GEN_LOGIN_ID_LOGIN,1);
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.