set filter

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Alessandro
Usuário Nível 3
Usuário Nível 3
Mensagens: 141
Registrado em: 07 Jul 2004 09:39
Localização: Santo Antonio da Platina-PR

set filter

Mensagem por Alessandro »

Caros Colegas,

Existe algum set filter mais rápido no xHarbour com Minigui?
Pois estou usando o set filter normalmente e estou achando lendo, utilizo NTX.
Qual seria a melhor solução? usar CDX?
Avatar do usuário
Antonio
Usuário Nível 3
Usuário Nível 3
Mensagens: 347
Registrado em: 14 Ago 2003 17:33
Localização: Sao Paulo - SP
Contato:

Mensagem por Antonio »

Ola Alessandro,

Voce pode tentar o CDX, existem afirmações a cerca de um ganho de aproximadamente 30% em relação ao NTX.

Voce pode ainda utilizar-se de uma outra técnica de filtragem...

WHILE FOR <CONDIÇÃO>....
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
Alessandro
Usuário Nível 3
Usuário Nível 3
Mensagens: 141
Registrado em: 07 Jul 2004 09:39
Localização: Santo Antonio da Platina-PR

Mensagem por Alessandro »

Olá Francisco...

Como poderia utilizar o While For na seguinte condição;

No browse faço o filtro conforme é alterado o valor de um text-box,

Por exemplo eu filtro os produtos de um determinado fornecedor, dessa forma:


Function UpDate009()

Select Produtos
Produtos->(DbSetOrder(1))
Produtos->(dbSeek(Form_009.Txt_CodFor.Value))
set filter to Produtos->CGC_FORN == Form_009.Txt_CodFor.Value
go top
Form_009.Brow_009.Value := Recno()

return


Se puder ma ajudar, agradeço.
Avatar do usuário
Antonio
Usuário Nível 3
Usuário Nível 3
Mensagens: 347
Registrado em: 14 Ago 2003 17:33
Localização: Sao Paulo - SP
Contato:

Mensagem por Antonio »

É Antonio Alessandro!

Bom dia!


Select Produtos

Produtos->(dbSeek(Form_009.Txt_CodFor.Value))
While for Produtos->CGC_FORN == Form_009.Txt_CodFor.Value .and. !eof()
end
go top
Form_009.Brow_009.Value := Recno()

return
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
Alessandro
Usuário Nível 3
Usuário Nível 3
Mensagens: 141
Registrado em: 07 Jul 2004 09:39
Localização: Santo Antonio da Platina-PR

Mensagem por Alessandro »

Antonio

Dá erro no código, o que pode ser?

Se coloco a comparação entre parenteses ele interperta o FOR como se fosse uma função, se não ele não reconhece o alias.

Outra coisa, deu certo sobre o AUTOEXEC.NT


Valeu
Avatar do usuário
Antonio
Usuário Nível 3
Usuário Nível 3
Mensagens: 347
Registrado em: 14 Ago 2003 17:33
Localização: Sao Paulo - SP
Contato:

Mensagem por Antonio »

Ola Alessandro,

Queira me desculpar...

Na realidade a sugestão é que voce construa um indice temporario, somente com o filtro desejado, entende?


If file("indice.cdx")
Erase Indice.cdx
INDEX ON Produtos->CGC_FORN TAG 1 WHILE Produtos->CGC_FORN == Form_009.Txt_CodFor.Value .and. !eof() TO "Indice.CDX"

go top
Form_009.Brow_009.Value := Recno()

Observe que utilizo o RDDCDX

Assim voce cria um indice somente com o conteudo filtrado.

Quanto ao autoexec.nt, baixei o MIcrosoft AntiSpyWare, rodei e foram detectadas 69 praguinhas....

Parece estar tudo bem agora.

Obrigado.
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Antonio escreveu:É Antonio Alessandro!

Bom dia!


Select Produtos

Produtos->(dbSeek(Form_009.Txt_CodFor.Value))
While for Produtos->CGC_FORN == Form_009.Txt_CodFor.Value .and. !eof()
end
go top
Form_009.Brow_009.Value := Recno()

return
Use esta opção do antonio para jogar as informações para um listbox ou mesmo um data grid ou banco de dados temporario e depois atualize no servidor os dados.
Sem mais
Wagner Nunes
www.vagucs.com.br
Responder