Locate super lento...

Delphi

20/06/2004

Olá

Tô com um programa em Delphi e SQLServer7; nesse banco tenho uma tabela de produtos com +- 3500 registros e tô usando o locate pra encontrar um registro através do código, só que a localização tá demorando uns 30 segundos:

A query:

SELECT Produto.IdProduto, Produto.IdCadeia, Produto.Descricao, Produto.LinhaProduto, Produto.Preco, Produto.PrecoAtacado, Produto.Foto, Produto.Unidade, Produto.TipoProduto, Produto.IdFornecedor, Produto.IdOrigem, Linhaproduto.Descricao, Produto.PrecoCompra
FROM Produto Produto, LinhaProduto Linhaproduto
WHERE (Linhaproduto.IdLinhaProduto = Produto.LinhaProduto) And
(Produto.LinhaProduto = :LinhaProduto)
ORDER BY Produto.IdProduto

a rotina de localização:

If Not DSPrincipal.DataSet.Locate(´IdProduto´, StrToInt(EdtPesqProd.Text), []) Then
ShowMessage(´Referência de Produto não se encontra cadastrada!´);

alguém pode me dizer o que pode tá acontecendo; existe algum método de busca mais ágil?

Obrigado

Té +.


Oquendo

Oquendo

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

20/06/2004

Colega,

Locate é realmente muito lento, mas 30 segundos para 3.500 linhas chega a ser um exagero...

Posso lhe sugerir o que eu uso, é um pouco mais trabalhoso, mas garanto que vc vai ter um resultado muito melhor...

Faça uma query auxliar que só busque no servidor o que lhe interessa, ou seja, a ID do Produto, com uma cláusula where igual a da query principal + um parametro que receberé o conteúdo do TEdit... Após o Open, utilize o método IsEmpty para verificar se ela está vazia... se estiver o produto não existe, se não estiver vazia é porque existe...

Espero ter ajudado...
T+


GOSTEI 0
POSTAR