Ir para conteúdo

POWERED BY:

Arquivado

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

mcsmarmcs

Fazer autoincremento no registro pela interface

Recommended Posts

Alguém sabe como fazer um autoincremento pegando a informação do último registro e acrescentando +1.Ex: Tenho um campo chamado ordem que é do tipo integer, preciso pegar o último registro desse campo e acrescentar +1. Mas não posso usar o MySQL pra fazer isso pois ele já está fazendo outro autoincremento nesta tabela. Preciso fazer isso na interface.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer usando uma query mesmo:

 

var   prox: integer;beginqry.Close;qry.Sql.Clear;qry.Sql.Add('select max(campo_desejado) as Proximo');qry.Sql.Add('from tabela');qry.Open;prox:=qry.FieldByName('PROXIMO').AsInteger;Inc(prox);Na variável prox vai estar o próximo valor para a tabela...end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não estou conseguindo trabalhar com MAX.O sistema pede outros campos tb, mas não consigo resolver.Estou usando MySQL, talvez os parâmetros sejam diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem de erro é: "Project Sistema.exe raised exception class EDatabaseError with message QRYfuturo: Field 'cod_empresa' not found".O código está abaixo:procedure TFRMfuturo.Button2Click(Sender: TObject);var prox: integer;begin QRYfuturo.Close; QRYfuturo.Sql.Clear; QRYfuturo.Sql.Add('select max(ordem) as Proximo'); QRYfuturo.Sql.Add('from futuro'); QRYfuturo.Open; prox:=QRYfuturo.FieldByName('PROXIMO').AsInteger; Inc(prox);end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro é pq você tem no FieldEditor o campo cod_empresa, sendo que você repassa o SQL e não menciona este campo, no caso teria de remover todos os campos do FieldEditor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora não deu mais erro, porem não encontro o local correto para colocar um insert.Esse comando deve estar em um campo de inserção de novo registro e o campo ordem deve ser exibido em um edit.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais específico como ?

Não tem segredos, basta dar um Insert na tabela, fazer a busca pelo novo código e atribuir o valor.

 

procedure TFRMfuturo.Button2Click(Sender: TObject);varprox: integer;beginQRYfuturo.Close;QRYfuturo.Sql.Clear;QRYfuturo.Sql.Add('select max(ordem) as Proximo');QRYfuturo.Sql.Add('from futuro');QRYfuturo.Open;prox:=QRYfuturo.FieldByName('PROXIMO').AsInteger;Inc(prox);tabela.Insert;tabelaCAMPO_CHAVE.Value:=prox;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.