Fórum Como retornar o ID do último registro inserido? #51696
21/07/2005
0
Uso ADO.
Numa tabela onde existe um campo autoincremental, após inserir um registro como faço para retornar o valor do campo autoincremento deste registro que foi incluso? Exemplo: Supondo que o último registro era 13, o próximo registro incluso terá o campo autoincremento = 14, claro. Mas como ter o retorno deste ´14´ logo após inserir o registro?
Detalhe: A aplicação trabalha em rede, portanto poderão haver vários usuários acessando a mesma tabela ao mesmo tempo. Dessa forma não poderei incluir o registro e em seguida executar um Select pra pegar o último que foi incluso, pois após o meu registro, poderão ter sido inseridos outros registros por outros usuários.
valeu
rtava
Rtava
Curtir tópico
+ 0Posts
21/07/2005
Tronbr
depois de comitar sua transação em uma adoquery coloque a seguinte instrução:
select gen_id(´seu generator´, 0) from rdb$database
vc terá como retorno o valor atua do seu generator
Gostei + 0
21/07/2005
Beppe
create procedure Bah (Nome varchar(60)) returns (ID Integer) as begin ID = gen_id(GEN_Bah, 1); ... suspend; end
Algo nesse estilo é fácil. Tbm poderia buscar o próximo ID e setá-lo explicitamente no registro antes de postar.
Gostei + 0
22/07/2005
Rtava
Obrigado pela dica. Resolvi usar a primeira opção, pois conforme comentei o sistema é usado em rede e com SP fica mais seguro.
Quanto à dica do [b:1940400e50]tronbr[/b:1940400e50], não consegui fazer funcionar. Porém, acredito que isso tenha a ver com o driver que estou usando que está gerando uma série de coisas estranhas no programa e que não deveriam existir. Mas obrigado também.
rtava
Gostei + 0
22/07/2005
Rtava
with qrAux do begin
Close;
SQL.Clear;
SQL.Add(´Select gen_id(GEN_PASTAS_ID, 1) [color=red:b9091478cd][b:b9091478cd]as ID[/b:b9091478cd][/color:b9091478cd] from rdb$database´);
Open;
end;
ShowMessage(IntToStr(qrAux[´ID´]));
Valeu!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)