como usar código do último registro inserido
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...
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
Curtidas 0
Respostas
Aroldo Zanela
13/05/2004
Colega,
Qual o banco de dados e mecanismos de acesso está utilizando? (BDE, ADO, IBX, IBO, DBX, Zeos, Etc)
Qual o banco de dados e mecanismos de acesso está utilizando? (BDE, ADO, IBX, IBO, DBX, Zeos, Etc)
GOSTEI 0
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
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
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...
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
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...
ao inserir pegue esse valor e some 1 para o novo código...
espero ter ajudado...
GOSTEI 0
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
13/05/2004
não sabia desse Locate, valeu!
GOSTEI 0