ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Gerar Id automático

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
wsilva7
Novato
Novato


Registrado: Quarta-Feira, 9 de Abril de 2008
Mensagens: 70

MensagemEnviada: Qui Ago 15, 2019 8:22 pm    Assunto: Gerar Id automático Responder com Citação

Boa noite.
Estou tentando usar um código para gerar id automático em um cadastro. Até ai tudo bem, esta funcionando normal. O problema é que o código esta se perdendo por algum motivo, tipo el vai gerando 1, 2, 3 .. mas as vezes ele para por exemplo no 4 e não consigo gerar a sequencia.
Alguém pode me dizer o que pode esta errado nesse código.

procedure TfrmCadTipoDocumento.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);

var ulticod : integer;
begin

if DM.DSTIPODOCUMENTO.State in [dsinsert] then
begin
tbauxtipodocumento.Open;
tbauxtipodocumento.Last;
ulticod:=tbauxtipodocumentoTD_ID.Value +1;
DM.TBTIPODOCUMENTOTD_ID.Value:=ulticod;
tbauxtipodocumento.Close;


end;

end;

Grato
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qua Ago 28, 2019 7:01 am    Assunto: Responder com Citação

Amigo, este tipo de código não pode ser feito desta forma, pois ao utilizá-lo em rede você terá problemas.

Você também não informou o banco de dados, fato importante.

Se você trabalha com o firebird, utilize os generators/sequence.
Se estiver utilizando paradox, access, considere a troca, pois estes bancos não oferecem muitos recursos.



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
wsilva7
Novato
Novato


Registrado: Quarta-Feira, 9 de Abril de 2008
Mensagens: 70

MensagemEnviada: Qua Set 18, 2019 10:54 am    Assunto: Responder com Citação

Bom dia johnny-walker, Obrigado pela resposta.
Estou usando Firebird 2.5.
Porem consegui resolver usando Query, mas como você mesmo mencionou estou considerando para os novos projetos usar Triggers e Gernerator.

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
netoferreira
Novato
Novato


Registrado: Sexta-Feira, 19 de Dezembro de 2014
Mensagens: 77
Localização: Macapá - AP

MensagemEnviada: Seg Out 28, 2019 12:03 pm    Assunto: Re: Gerar Id automático Responder com Citação

wsilva7 escreveu:
Boa noite.
Estou tentando usar um código para gerar id automático em um cadastro. Até ai tudo bem, esta funcionando normal. O problema é que o código esta se perdendo por algum motivo, tipo el vai gerando 1, 2, 3 .. mas as vezes ele para por exemplo no 4 e não consigo gerar a sequencia.
Alguém pode me dizer o que pode esta errado nesse código.

procedure TfrmCadTipoDocumento.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);

var ulticod : integer;
begin

if DM.DSTIPODOCUMENTO.State in [dsinsert] then
begin
tbauxtipodocumento.Open;
tbauxtipodocumento.Last;
ulticod:=tbauxtipodocumentoTD_ID.Value +1;
DM.TBTIPODOCUMENTOTD_ID.Value:=ulticod;
tbauxtipodocumento.Close;


end;

end;

Grato


Uso no MySQL

Código:
function GetId(Campo, Tabela : string) : Integer;
begin
  with TMyQuery.Create(nil) do
    try
      Connection := DmDados.MyConnection;
      Sql.Add('SELECT '+Campo+' FROM '+Tabela+' ORDER BY '+Campo+' DESC LIMIT 1');
      Open;
      Result := Fields[0].AsInteger + 1;
    finally
      Close;
      Free;
    end;
end;


Código:
DmDados.qr_suatabela_id.AsInteger    := GetId('id','suatabela');
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9098
Localização: Sinop-MT

MensagemEnviada: Ter Out 29, 2019 9:03 am    Assunto: Re: Gerar Id automático Responder com Citação

netoferreira escreveu:
wsilva7 escreveu:
Boa noite.
Estou tentando usar um código para gerar id automático em um cadastro. Até ai tudo bem, esta funcionando normal. O problema é que o código esta se perdendo por algum motivo, tipo el vai gerando 1, 2, 3 .. mas as vezes ele para por exemplo no 4 e não consigo gerar a sequencia.
Alguém pode me dizer o que pode esta errado nesse código.

procedure TfrmCadTipoDocumento.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);

var ulticod : integer;
begin

if DM.DSTIPODOCUMENTO.State in [dsinsert] then
begin
tbauxtipodocumento.Open;
tbauxtipodocumento.Last;
ulticod:=tbauxtipodocumentoTD_ID.Value +1;
DM.TBTIPODOCUMENTOTD_ID.Value:=ulticod;
tbauxtipodocumento.Close;


end;

end;

Grato


Uso no MySQL

Código:
function GetId(Campo, Tabela : string) : Integer;
begin
  with TMyQuery.Create(nil) do
    try
      Connection := DmDados.MyConnection;
      Sql.Add('SELECT '+Campo+' FROM '+Tabela+' ORDER BY '+Campo+' DESC LIMIT 1');
      Open;
      Result := Fields[0].AsInteger + 1;
    finally
      Close;
      Free;
    end;
end;


Código:
DmDados.qr_suatabela_id.AsInteger    := GetId('id','suatabela');


MySQL tem auto_increment
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB