Page 1 of 1

TBrowse-filtrado de registros

PostPosted: Sun Oct 31, 2010 6:17 am
by juan_arroyo_t
Compañeros del foro

Estoy tratando de filtrar registros en un tbrowse usando índices por ahí encontre una instrucción

oLbx:SetFilter( cField, uValu1,uValu2 )

Pero no consigo implementarla para que funcione correctamente

Este es mi código
Code: Select all  Expand view


STATIC FUNCTION BrwFac()
    LOCAL oDlg, oLbx, oSay, cSay, nPece, nIva
    LOCAL nOrder, cVar
    IF LEFT(cSel,1) == "F"
        cSay := "Consulta por número de factura"
        nOrder := 1
    ENDIF
    IF LEFT(cSel,1) == "C"
        cVar := cCliNum
        cSay := "Cliente  ---> " + cCliNum + "  " + cCliNom
        nOrder := 2
    ENDIF
    IF LEFT(cSel,1) == "V"
        cVar := cAgente
        cSay := "Vendedor ---> " + cAgente + "  " + cAgeNom
        nOrder := 3
    ENDIF
    cfac->(DBSETORDER(nOrder))
    cfac->(DBSEEK(cVar))   

    DEFINE DIALOG oDlg RESOURCE "BrwFac3" TITLE "Consulta de facturas"
      oDlg:lHelpIcon := .F.
   
    REDEFINE SAY oSay VAR cSay ID 101 OF oDlg ;
        COLOR RGB(255,0,0)

   REDEFINE LISTBOX oLbx ;
    FIELDS cfac->facnum, DTOC(cfac->fechafac), DTOC(cfac->vencfac), cfac->tip_fac, ;
             cfac->agente, cfac->clinum, TRANSFORM(cfac->impfac,"999,999,999.99"), ;
             IIF(cfac->pagototal=0," ",TRANSFORM(cfac->pagototal,"999,999,999.99")), ;
             IIF(cfac->impfac-cfac->pagototal= 0," ", ;
                  TRANSFORM(cfac->impfac-cfac->pagototal,"999,999,999.99")), ;
             cFac->estado ;
        HEAD "FACTURA","FECHA","FECVEN","TIPO","VEND","CLIENTE","IMPORTE","A CUENTA", ;
              "SALDO", "STATUS" ;
        FIELDSIZES 73, 73, 73, 73, 73, 73, 94, 94, 94, 30 ;
        ALIAS "cfac" ;
        ID 102 OF oDlg ;
        ON LEFT DBLCLICK( cFacNum := cfac->facnum, nPece := cfac->descu_2, ;
                            nIva := cfac->iva, MosFac(nPece, nIva))
    oLbx:aJustify := {.f.,.f.,.f.,.f.,.f.,.f.,.t.,.t.,.t.,.f.}

    ACTIVATE DIALOG oDlg CENTERED

RETURN NIL
 



Por favor si alguien me puede ayudar

Saludos

Re: TBrowse-filtrado de registros

PostPosted: Sun Oct 31, 2010 11:01 am
by Enrico Maria Giordano
Try using OrdScope() instead. OrdScope() require an index on the filtered key (just like SetFilter() method, if I remember correctly) and let you see only the filtered records even outside the browse.

EMG

Re: TBrowse-filtrado de registros

PostPosted: Sun Oct 31, 2010 4:34 pm
by juan_arroyo_t
Enrico

Gracias por tu respuesta

Esto significa que puedo usar scopes con índices ntx ?

Saludos

Re: TBrowse-filtrado de registros

PostPosted: Sun Oct 31, 2010 6:10 pm
by Enrico Maria Giordano
Yes, [x]Harbour DBFNTX supports scopes.

EMG

Re: TBrowse-filtrado de registros (solucionado)

PostPosted: Sun Oct 31, 2010 10:52 pm
by juan_arroyo_t
Enrico

Muchas gracias por tu ayuda

Por fin logré utilizar los scopes en Ntx's aqui reproduzco como lo hice para ver si a alguien le es de utilidad

Code: Select all  Expand view


# include "ord.ch"                 // al principio del programa

STATIC FUNCTION BrwFac()
    LOCAL oDlg, oLbx, oSay, cSay, oBSal, nPece, nIva
    LOCAL nOrder
    IF LEFT(cSel,1) == "F"
        cSay := "Consulta por número de factura"
        nOrder := 1
    ENDIF
    IF LEFT(cSel,1) == "C"
        cSay := "Cliente  ---> " + cCliNum + "  " + cCliNom
        nOrder := 2
    ENDIF
    IF LEFT(cSel,1) == "V"
        cSay := "Vendedor ---> " + cAgente + "  " + cAgeNom
        nOrder := 3
    ENDIF
    cfac->(DBSETORDER(nOrder))
    IF nOrder = 2
        cfac->(ordscope(0, cCliNum))
        cfac->(ordscope(1, cCliNum))
        cfac->(DBGOTOP())
    ELSEIF nOrder = 3
        cfac->(ordscope(TOPSCOPE, cAgente))
        cfac->(ordscope(BOTTOMSCOPE, cAgente))
        cfac->(DBGOTOP())
    ENDIF

    DEFINE DIALOG oDlg RESOURCE "BrwFac3" TITLE "Consulta de facturas"
      oDlg:lHelpIcon := .F.
   
    REDEFINE SAY oSay VAR cSay ID 101 OF oDlg ;
        COLOR RGB(255,0,0)

   REDEFINE LISTBOX oLbx ;
    FIELDS cfac->facnum, DTOC(cfac->fechafac), DTOC(cfac->vencfac), cfac->tip_fac, ;
             cfac->agente, cfac->clinum, TRANSFORM(cfac->impfac,"999,999,999.99"), ;
             IIF(cfac->pagototal=0," ",TRANSFORM(cfac->pagototal,"999,999,999.99")), ;
             IIF(cfac->impfac-cfac->pagototal= 0," ", ;
                  TRANSFORM(cfac->impfac-cfac->pagototal,"999,999,999.99")), ;
             cfac->estado ;
        HEAD "FACTURA","FECHA","FECVEN","TIPO","VEND","CLIENTE","IMPORTE","A CUENTA", ;
              "SALDO", "STATUS" ;
        FIELDSIZES 73, 73, 73, 73, 73, 73, 94, 94, 94, 30 ;
        ALIAS "cfac" ;
        ID 102 OF oDlg ;
        ON LEFT DBLCLICK( cFacNum := cfac->facnum, nPece := cfac->descu_2, ;
                            nIva := cfac->iva, MosFac(nPece, nIva))
        oLbx:bKeydown := {|nKey| IIF(nKey = 13, (cFacNum := cfac->facnum, ;
                                nPece := cfac->descu_2, nIva := cfac->iva, ;
                                MosFac(nPece,nIva)),)}                             
    oLbx:aHJustify := {2,2,2,2,2,2,2,2,2,2}
        oLbx:aJustify := {2,2,2,2,2,2,1,1,1,2}
        oLbx:Set3DStyle()
       
    REDEFINE BUTTON oBSal ID 103 OF oDlg ;
        ACTION oDlg:End()
       
    ACTIVATE DIALOG oDlg CENTERED

RETURN NIL
 


Saludos