Filtrar registros

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

PITERGALDIANO
Usuário Nível 2
Usuário Nível 2
Mensagens: 91
Registrado em: 28 Nov 2003 08:48

Filtrar registros

Mensagem por PITERGALDIANO »

Bom dia a todos

qual a maneira mais fácil para filtrar registros em um DBF e exibilos em um TBrowse?

Obs.: se um campo com opção de filtro não for especificado (empty), o mesmo não deve ser filtrado

Obrigado a todos.
Piter Galdiano
Programador Clipper
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

Mensagem por momente »

Amigo,

Usando uma função do amigo Dudu (senão estiver enganado), dou um seek e uso assim:

Código: Selecionar todos

oMybrowser:SKIPBLOCK     := {|x| SKIPWHIL(x, {||FATABELA->Cod_Clie==mCod_Clie})}
oMybrowser:GOTOPBLOCK    := {| | SKIPWHIL((LASTREC()* -1),{||FATABELA->Cod_Clie==mCod_Clie})}
oMybrowser:GOBOTTOMBLOCK := {| | SKIPWHIL((LASTREC()* 1), {||FATABELA->Cod_Clie==mCod_Clie})}


//---------------
* 
* SKIPWHIL () 
* 
* Esta funcao 'e auxiliar dos browsers, e serve para fazer filtros... 
* Dudu_Xbase : 23/05/1997 fununcionou... *:) 
* 
**********/ 

function SKIPWHIL (x,key_val) 

    local i := 0 

    if lastkey() == 0 
       return i 
    endif 

    if (x > 0 .and. recno() <> lastrec()+1) 
       do while (i < x) 
          DBSKIP(1)
          if eof() .or. !(eval(key_val)) 
             DBSKIP(-1)
             exit 
          endif 
          i++ 
       enddo 
    elseif (x < 0) 
       do while (i > x) 
          DBSKIP(-1)
          if bof() 
             exit 
          endif 
          if !(eval(key_val)) 
             DBSKIP(1)
             exit 
          endif 
          i-- 
       enddo 
    endif 
return i
Faça as adaptações para seu caso e veja se resolve!

Valeu!!

Feliz ano novo!!! :)Pos
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Responder