como usar código do último registro inserido

Delphi

13/05/2004

Olá pessoal. estou construindo um sistema aonde, cada vez que incluo uma empresa, já abro automaticamente a janela para incluir clientes.

A questão é a seguinte: quando eu dou um qryEmpresas.Insert, preencho os dados da empresa, dou qryEmpresas.Post, para dar ´refresh´ no grid que está atrás da janela, eu dou um qryEmpresas.Close e qryEmpresas.Open. Só que na SQL das empresas eu tenho um ORDER BY pra poder ficar em ordem alfabética - portanto, não tenho como saber qual foi o último cliente a ser inserido fazendo um qryEmpresas.Last.

Tentei capturar o valor do campo ID logo após que eu dou o comando Post, mas ele retorna 0.

Para incluir os clientes, eu passo um parâmetro para o qryClientes dizendo a qual empresa eles pertencem, mas se eu não souber qual foi a empresa inserida, não tenho como passar esse parâmetro...

Como posso fazer no meu caso?

Obrigado...


Ultranol

Ultranol

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

13/05/2004

Colega,

Qual o banco de dados e mecanismos de acesso está utilizando? (BDE, ADO, IBX, IBO, DBX, Zeos, Etc)


GOSTEI 0
Wtjunior

Wtjunior

13/05/2004

Olá

No Oracle nós usamos...

insert into tabela(codigo, ...........)
values(codigo, ............................)
returning codigo into <variável>;

Vai retornar o valor que foi inserido, ou seja, o último

tente assim
abraço
Wilson


GOSTEI 0
Ultranol

Ultranol

13/05/2004

Esse é o problema, eu tou usando Access... e não estou inserindo através de um comando... estou usando o método Insert...
e o mecanismo de acesso eu não sei... eu sei q eu criei um registro lá no Fontes de dados ODBC, e no Delphi eu tenho um TDatabase que aponta pra essa ´fonte de dados´ no AliasName...


GOSTEI 0
Carlos Bernardo

Carlos Bernardo

13/05/2004

crie uma query e use ( Select max(Campo) from tabela)
ao inserir pegue esse valor e some 1 para o novo código...


espero ter ajudado...


GOSTEI 0
Rômulo Barros

Rômulo Barros

13/05/2004

Coloque assim no evento BeforePost da QueryEmpresa:
...
Var
  NomeEmpresa : String;
Begin
  NomeEmpresa := QueryEmpresa.FieldByName(´Empresa´).AsString;
End;

...

Evento AfterPost da QueryEmpresa;
Begin
  QueryEmpresa.Locate(´Empresa´,NomeEmpresa,[]);
  QueryClientes.Insert;
  QueryClientes.FieldByName(´CodigoEmpresa´).AsString := QueryEmpresa.FieldbyName(´CodigoEmpresa´).AsString;
end;



GOSTEI 0
Ultranol

Ultranol

13/05/2004

não sabia desse Locate, valeu!


GOSTEI 0
POSTAR