Fórum como usar código do último registro inserido #232208

13/05/2004

0

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

Responder

Posts

14/05/2004

Aroldo Zanela

Colega,

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


Responder

Gostei + 0

14/05/2004

Wtjunior

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


Responder

Gostei + 0

15/05/2004

Ultranol

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...


Responder

Gostei + 0

15/05/2004

Carlos Bernardo

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...


Responder

Gostei + 0

17/05/2004

Rômulo Barros

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;



Responder

Gostei + 0

23/05/2004

Ultranol

não sabia desse Locate, valeu!


Responder

Gostei + 0

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

Aceitar