[firebase-br] lentidao para abrir a lista de precos 2

Andrei Luís compuvale.software em gmail.com
Seg Jun 2 15:08:17 -03 2008


Rubens, você precisa colocar na instrução SQL o que você quer pesquisar. E
não pode ser no onEnter como você colocou, talvez um botão seja o mais
indicado. Ex.:

procedure Tpesq_produto.bPesquisaCodigoClick(Sender: TObject);
begin
   Dados.Produtos.Close;
   Dados.Produtos.SQL.Clear;
   Dados.Produtos.SQL.Add('Select id, codigo, descricao, preco from
produtos');    // coloque
                                                                 // todos os
campos que você quer, não use *
   if edt_codigo.Text <> '' then     // mudei esta linha também
      begin
           Dados.Produtos.SQL.Add('where codigo containing :wcod');
           Dados.Produtos.SQL.ParamByName('wcod').asString  :=
edt_codigo.text;
       end
   Dados.Produtos.SQL.Add('order by Descricao');   // mudei esta linha
também
   Dados.Produtos.Open;
    end;

Acho que é isso,
Abraço,
Andrei


2008/6/2 Rubens - Solucao Empresarial <rubens em solucaoempresarial.net>:

> agradeco as outras respostas
>
> como faço em vez de buscar 10000 itens de vez buscar apenas 50 - se eu
> digitar LIVRO busque apenas LIVRO  para baixo -
>
>
> Bom dia Pessoal to precisando de uma mao
> tenho um cadastro de 10000 itens e leva 25 segundos para abrir
> a seguinte rotina - se o usuario clicar no campo descricao ele coloca os
> produtos em ordem alfabetica e /ou se clicar no codigo ele abre a lista em
> ordem de codigo, pelo que pude entenbder ele esta puxando os 10000 itens
> toda vez como posso agilizar isso?
> Alguem pode me dar uma ideia?
> Agradeco a atencao - abaixo ta a rotina que uso
>
> procedure Tpesq_produto.edt_descricaoEnter(Sender: TObject);
> begin
> //  edt_codigo.Clear;
>  edt_descricao.Text := '';
>  if edt_codigo.Text = '' then
>    begin
>    Dados.Produtos.Close;
>    Dados.Produtos.SQL[0] := 'Select * from produtos';
>    Dados.Produtos.SQL[1] := 'order by Descricao';
>    Dados.Produtos.Open;
>    edt_descricao.SetFocus;
>    end
> end;
>
> procedure Tpesq_produto.edt_codigoEnter(Sender: TObject);
> begin
>  edt_descricao.Clear;
>  edt_codigo.Text    := '';
>  Dados.Produtos.Close;
>  Dados.Produtos.SQL[0] := 'Select * from produtos';
>  Dados.Produtos.SQL[1] := 'order by codigo1';
>  Dados.Produtos.Open;
>  edt_codigo.SetFocus
> end;
>



Mais detalhes sobre a lista de discussão lista