Demora para atualizar

Delphi

04/04/2009

Amigos,
Uso Firebird e Mercury para conexão com o banco de dados. Tenho uma tela de orçamentos, onde o cabeçalho do orçamento esta ligado a um MDODataSet e os itens do orçamento ligado a outro MDODataSet.
Depois que crio um novo orçamento, e preciso voltar a navegação nos registros de orçamento colocar na posição do orçamento que criei.
Faço assim:
DM.MDS_ORCAM.Close;
DM.MDS_ORCAM.SelectSQL.Clear;
DM.MDS_ORCAM.SelectSQL.Add(´select * from ORCAM´);
DM.MDS_ORCAM.Open;

DM.MDS_ORCAM.Locate(´ONUM´,onum_aux,[]);

onde onum_aux é o numero do orçamento que criei, porém demora cerca de 8 segundos até voltarem os registros dos itens.

Entre itens e venda há uma relação mestre detalhe.

Por que essa demora?

Grato.


Fonsenix

Fonsenix

Curtidas 0

Respostas

Dbergkamps10

Dbergkamps10

04/04/2009

olá,
kra se vc estiver usando em redes, verifique se no caminho esta o nome da maquina, se estiver coloque o ip, pode ser q fique mais rapido.

Att
Dalton


GOSTEI 0
Picyka

Picyka

04/04/2009

Amigo, existe formas diferentes de fazer isso vo sitar duas que tenho certeza que ficara bem mais rapido, crie um indice na client e trabalhe com o FINDKEY, outra maneira ainda mais rapida ao invés de vove buscar todos os registros da tabela pedido busque penas oque vc crio
passando o pedido la em cima no sql
fazendo um where

tenho certeza que as duas formas terá resultado.


GOSTEI 0
Fonsenix

Fonsenix

04/04/2009

olá, kra se vc estiver usando em redes, verifique se no caminho esta o nome da maquina, se estiver coloque o ip, pode ser q fique mais rapido. Att Dalton


Então Dalton, já uso com o ip, valeu pela dica.

Amigo, existe formas diferentes de fazer isso vo sitar duas que tenho certeza que ficara bem mais rapido, crie um indice na client e trabalhe com o FINDKEY, outra maneira ainda mais rapida ao invés de vove buscar todos os registros da tabela pedido busque penas oque vc crio passando o pedido la em cima no sql fazendo um where


Picyka, infelizmente acho que o MDO não tem a função FindKey, e quanto buscar somente o registro que inseri não dá certo porque assim que o usuário acabar de inserir, eu devo deixar os registros disponiveis para consulta onde o usuario com as setas move-se pelos registros.


GOSTEI 0
Dbergkamps10

Dbergkamps10

04/04/2009

Olá,
Verifique entao se o MDO tem a funçao Locate. Funciona quase da mesma forma:
MDO.Locate(NomedoCampo,NomedaChave, [lopartialkey]);

nao esquece de colocar na clausula uses a unit DB.

Espero ter ajudado.

Att
Dalton


GOSTEI 0
POSTAR