Página 1 de 1

set filter

Enviado: 10 Fev 2005 18:52
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?

Enviado: 10 Fev 2005 20:44
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>....

Enviado: 11 Fev 2005 09:41
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.

Enviado: 11 Fev 2005 10:20
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

Enviado: 11 Fev 2005 11:56
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

Enviado: 11 Fev 2005 13:42
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.

Enviado: 16 Fev 2005 00:16
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.