Jump to content
Fórum Script Brasil
  • 0

Filtro entre 02 Edits e resultado no DBGrid - Delphi 10.3 / InterBase 2020


Question

Situação:

> Banco de dados(SGBD): InterBase 2020
> Tabela: PRODUTOS(tbProdutos)
> Campos:
    - PRODUTO_ID Integer not null, [PrimaryKey]
    - PROD_DESCR Varchar,
    - PROD_GRUPO Varchar,
    - PROD_UNIDA Varchar,
    - PROD_PRECO Numeric(12,2),

>> Form: Consultar Produtos
>> Componentes:

- 01 ibquery(tbProdutos)
- 01 DataSource(tbProdutos)

- 01 Edit1(Codigo De) PRODUTO_ID Integer
- 01 Edit2(Codigo Ate) PRODUTO_ID Integer
  (usei edit comun aba Standard, e não DBEdit)
- 01 Button1(Filtrar Dados)
- 01 Button2(Cancelar/Fechar)
- 01 DBGrid1(Resultado da consulta)

>>> Dúvida:
como fazer a filtragem da tabela PRODUTOS usando o campo chave(PRODUTO_ID) entre
o Edit1(inicial) e Edit2(final)?

Ao digitar no Edit1 " 10 ", e no edit2 " 21 ", e clicar no Button1(Filtrar dados)
deveria aparecer no meu DBGrid somente os produtos do código 10 ao código 21, como no
exemplo abaixo.


codigo    descrição    grupo        preço
-------------------------------------------------
10    Produto 10    Alimentos    10,00
11    Produto 11    Alimentos    10,00
12    Produto 12    Bebidas        10,00
13    Produto 13    Bebidas        10,00
14    Produto 14    Alimentos    10,00
15    Produto 15    Diversos    10,00

...  até

21    Produto 21    Alimentos    10,00


Exemplo mais detalhado:

> Digitei no Edit1(04).
> Digitei no Edit2(12).
> Clico no Button1(Filtrar)
> Resultado: Todos os produtos do código 04 até o código 12, totalizando 09 registros no DBGrid1.

Qual seria a melhor forma de conseguir o resultado ??

P.S.: USo Delphi 10.3 Rio e InterBase 2020. O Projeto vai ser apenas para aprendizado e pretendo
que ele seja um Pequeno controle de estoque.

Muito obrigado pela oportunidade de aprender.

FiltroPorCodigos.png

Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

vlw a ajuda Jhonas.

Para ser mais direto,

eu tendo 02 Variaves(vCodigoIni, vCodigoFim: String), como ficaria o comando SQL para essa filtragem?

Eu poderia usar o exemplo acima e, no lugar dos vaores 10 e 20, o valor das edits correspondentes,

tipo:

 

.. Button1.OnClick;

var

  vCodigoIni, vCodigoFim: String

begin

  Trim(StrToInt(edtCodigoIni));

  Trim(StrToInt(edtCodigoFim));

  MinhaQry.close;

  MinhaQry.SQL.Clear;

  MinhaQry.SQL.ADD.('Select * from produtos');

  MinhaQry.SQL.ADD.( + 'Where Codigo BETWEEN edtCodigoIni and edtCodigoFim' );

  MinhaQry.Open;

end;

Como converto o edit digitado para o valor da variavel correspondente?

 

Se puder me ajudar nessa também agradeço.

 

Link to post
Share on other sites
  • 0

ok... exemplo

SELECT * FROM Produtos
WHERE Codigo BETWEEN
vCodigoIni AND vCodigoFim;

nesse caso voce deve passar os valores dos edits para as variaveis

.. Button1.OnClick;

var

  vCodigoIni, vCodigoFim: String

begin

  vCodigoIni := edtCodigoIni.Text;

  vCodigoFim := edtCodigoFim.Text;

  MinhaQry.close;

  MinhaQry.SQL.Clear;

  MinhaQry.SQL.ADD.('Select * from produtos');

  MinhaQry.SQL.ADD.( + 'Where Codigo BETWEEN ' + vCodigoIni  + ' and ' + vCodigoFim );

  MinhaQry.Open;

end;

se quiser usar os proprios edits .. seria isso

begin

  MinhaQry.close;

  MinhaQry.SQL.Clear;

  MinhaQry.SQL.ADD.('Select * from produtos');

  MinhaQry.SQL.ADD.( + 'Where Codigo BETWEEN '+ inttostr(strtoint(trim(edtCodigoIni.Text))) + ' and '  +  inttostr(strtoint(trim(edtCodigoFim.Text)));

  MinhaQry.Open;

end;

abraço

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148905
    • Total Posts
      644996
×
×
  • Create New...