Locate, Filtro ou consulta SQL ?

22/12/2005

Olá amigos do forum ...

Estou desenvolvendo um programa para gerenciar BANCA DE JORNIS E REVISTAS, e estou com o seguinte problema.

Vou resumir aqui ...

Tenho a TABELA CONTROLE_EDCOES:
campos:( CODPRODUTO, NUMEDCAO, QTDE ... ETC)

No formulário de VENDAS Uso o ´Locate´ ASSIM:

tblCONTROLE_EDCOES.LOCATE(´CODPRODUTO;NUMEDCAO´, .... )

para verificar se o produto e a edção está cadastrado. para que eu possa vender e atualizar a quantidade em estoque. até então tudo bem, estou desenvolvendo o sistema utilizando Windows XP, AMD 2000+, 353 RAM.

no meu computador tudo bem, mas quando testo no computar do cliente
por ser uma máquina modesta (Windows 98SE, 300MHz, 64 RAM), o
LOCATE, demora um pouco, tornando a venda um processo lento.

Pergunta, alguém saberia com tornar o processo um pouco mais rápido,
sem ter que pedir para o cliente, trocar o PC.

O que devo usar, Locate, Filtro ou consulta SQL e como fazer?

Aguardo a ajuda dos amigos ...


Guialberto Soares

Respostas

22/12/2005

Martins

Bem nesse caso, c não disse tb qual a sua base, mas acho q com SQL ficaria mais rápido. Algo mais ou menos assim.

Query.Close;
Query.Sql.Clear;
Query.Sql.Add(´Select CodProduto, Numeracao, Qtde, etc.. From TblControle_Edcoes where CodProduto = :pCod and Numeraco = :pNumero order by CodProduto´);
Query.Sql.ParamByName(´pCod´).AsString := Edit1.text;
Query.Sql.ParamByName(´pNumero´).AsInteger := StrToInt(Edit2.Text);
Query.Prepare;
Query.Open;


64 de Ram, se o fluxo de informações crescer muito, vai complicar depois.

Boa Sorte!!!


Responder Citar

23/12/2005

Wiltonfenix

Cara, Locate e Filtros são coisas que você deve abolir de seus sistemas.


Responder Citar

24/12/2005

Guialberto Soares

Ok amigos, vou testar depois posto.

Apropósito, estou utilizando o FireBird 1.5


Responder Citar

24/12/2005

Guialberto Soares

valeu amigos ...
funcionou mesmo, fiz o teste e o que era processado em proximadamente
3800 milisegundos passou a ser feito em 15 milissegundo, parece milagre ...

Obdo aos amigos ...
Martins (pela consulta SQL) e vou seguir o conselho do
amigo WiltonFenix, abolindo Locate e Filtros dos meus sistemas.

Até mais ...
[]´ Guiga


Responder Citar

24/12/2005

Adriano Santos

valeu amigos ... funcionou mesmo, fiz o teste e o que era processado em proximadamente 3800 milisegundos passou a ser feito em 15 milissegundo, parece milagre ... Obdo aos amigos ... Martins (pela consulta SQL) e vou seguir o conselho do amigo WiltonFenix, abolindo Locate e Filtros dos meus sistemas. Até mais ... []´ Guiga


Cara, já aboli a um bocado de tempo. Realmente o SQL faz milagres, rsrs...se precisar de uma força no SQL manda as perguntas ai e vamos ver o que fazemos.


Responder Citar

30/12/2005

Guialberto Soares

Valeu mesmo, Adriano Santos ...

Assim que forem surgindo as dúvidas vou colocá-las aqui.

[]´Guiga.


Responder Citar

31/12/2005

Marco Salles

So a título de curiosidade duas perguntas :

1) Pergunta;

tblCONTROLE_EDCOES.LOCATE(´CODPRODUTO;NUMEDCAO´, .... )


Amigo Guiga , na sua base de dados CodPrioduto e NumEdcao são Indices
?????

2 Pergunta:

Quando voce faz a consulta , existem algum dbgrid conectado a esta base de dados nesse formulário ???


Responder Citar

02/01/2006

Andremuller

se essa consulta for muito frequente cria uma procedure no banco


Responder Citar

02/01/2006

Martins

valeu amigos ... funcionou mesmo, fiz o teste e o que era processado em proximadamente 3800 milisegundos passou a ser feito em 15 milissegundo, parece milagre ... Obdo aos amigos ... Martins (pela consulta SQL) e vou seguir o conselho do amigo WiltonFenix, abolindo Locate e Filtros dos meus sistemas. Até mais ... []´ Guiga


Blz Guiga, qualquer coisa estamos aqui.

Lembrando tb q a performance de funções como Locate dependem muito de como está estruturada a sua Tabela. Eu pessoalmente utilizo bastante SQL.

Boa Sorte!!!


Responder Citar

02/01/2006

Marco Salles

So a título de curiosidade duas perguntas :

1) Pergunta;

Citação:
tblCONTROLE_EDCOES.LOCATE(´CODPRODUTO;NUMEDCAO´, .... )


Amigo Guiga , na sua base de dados CodPrioduto e NumEdcao são Indices
?????

2 Pergunta:

Quando voce faz a consulta , existem algum dbgrid conectado a esta base de dados nesse formulário ???


Responder Citar

03/01/2006

Guialberto Soares

Olá Marco Salles, respondendo as suas perguntas:

Perguta:
1: CodProduto e NumEdcao são Indices?
Resposta: Sim.

2: Quando voce faz a consulta , existem algum dbgrid conectado a esta base de dados nesse formulário ???
Resposta: Não.


Responder Citar

03/01/2006

Guialberto Soares

O amigo andremuller

Escreveu:
´Se essa consulta for muito frequente cria uma procedure no banco.´

Sim amigo, a consulta é bem frequente, utilizo-a para venda.
só que nunca trabalhei com Procedure, se alguém poder me ajudar a
começar, agradeço ...

Resumindo o processo: em um formulário de venda, atravéz dos campos
CODPRODUTO E NUMEDICAO da tabela CONTROLEEDICOES, localizo o registro e atualizo com a quantidade vendida.

Resumindo
Os controles do formulário, são basicamente 3 Edits (ECodProdto, ECodEdicao, EQtde).

Utilizo o IBExpert e o FireBird 1.5

Espero que eu tenha sido claro.


Responder Citar