Retornar Valor Autoincremento - MSQL
Boa noite!
Estou desenvolvendo uma aplicação utilizando Delphi 2010 + MYSQL, e para retornar o código do registro gerado, criei uma função, como segue abaixo:
function RetornaIdRegistro: integer;
var
FSql: TSqlDataSet;
begin
FSql := TSQLDataSet.Create(nil); try
with FSql do
begin
SQLConnection := dmServidor.sqlConexao;
Close;
CommandText := 'select last_insert_id()';
Open; result := Fields[0].AsInteger;
end;
finally
FreeAndNil(FSql);
end;
end; O problema que está acontecendo é que a função sempre retorna zero. Pelo banco, quando eu crio um registro manual editando a tabela, após o comit eu executo a linha select last_insert_id() e funciona perfeitamente. Minha pergunta é: por que pelo delphi retorna sempre zero? Procurei pela net e não achei nenhuma solução, a não ser "select max(campo) from tabela" ou ainda "select usrs_cod from usuarios order by usrs_cod desc limit 1", que ao meu ver não me parece pertinente. Se alguém tiver sugestões, por favor poste pois se não encontrar a solução terei que apelar ao que ao meu ver não é pertinente. Desde já agradeço a atenção de todos. Abraços. Rogério
var
FSql: TSqlDataSet;
begin
FSql := TSQLDataSet.Create(nil); try
with FSql do
begin
SQLConnection := dmServidor.sqlConexao;
Close;
CommandText := 'select last_insert_id()';
Open; result := Fields[0].AsInteger;
end;
finally
FreeAndNil(FSql);
end;
end; O problema que está acontecendo é que a função sempre retorna zero. Pelo banco, quando eu crio um registro manual editando a tabela, após o comit eu executo a linha select last_insert_id() e funciona perfeitamente. Minha pergunta é: por que pelo delphi retorna sempre zero? Procurei pela net e não achei nenhuma solução, a não ser "select max(campo) from tabela" ou ainda "select usrs_cod from usuarios order by usrs_cod desc limit 1", que ao meu ver não me parece pertinente. Se alguém tiver sugestões, por favor poste pois se não encontrar a solução terei que apelar ao que ao meu ver não é pertinente. Desde já agradeço a atenção de todos. Abraços. Rogério
Rogerio Merlotti
Curtidas 0
Respostas
Rogerio Merlotti
28/06/2011
Cometi um pequeno equívoco no título do tópico.
O título correto é "Retornar Valor Incremento - MYSQL".
Tem como alterar o título?
Peço desculpas pelo erro.
Obrigado.
Rogério
GOSTEI 0
Junior Viesa
28/06/2011
Não sei se é o mais usula mas uma forma de resolver o seu problema seria você dar um select auto_increment from tabela...
GOSTEI 0
Rogerio Merlotti
28/06/2011
Junior, fui testar a sua dica, mas deu um erro dizendo que o auto_increment é uma coluna desconhecida.
GOSTEI 0
Marcos
28/06/2011
Junior, fui testar a sua dica, mas deu um erro dizendo que o <FONT size=2>auto_increment é uma coluna desconhecida.</FONT>
estou com mesmo problema, preciso desse retorno mais também só vem zero.
GOSTEI 0