GARANTIR DESCONTO

Fórum Como retornar o ID do último registro inserido? #51696

21/07/2005

0

Pessoal, outro probleminha...

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

Rtava

Responder

Posts

21/07/2005

Tronbr

faça o seguinte:

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


Responder

Gostei + 0

21/07/2005

Beppe

Uma solução seria fazer uma SP, que insere o registro e retorna o ID usado.

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.


Responder

Gostei + 0

22/07/2005

Rtava

Fala [b:1940400e50]Beppe[/b:1940400e50]!

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


Responder

Gostei + 0

22/07/2005

Rtava

tronbr, acabei conseguindo da sua maneira, porém incluindo um pequeno detalhe:

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!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar