Page 1 of 1

AdsSetAof()

Posted: Tue Dec 11, 2012 12:50 pm
by RuFerSo
Hola a kigos:

Usando AdsSetAof() en un xBrowse, los datos que muestra corresponde a lo
solicitado, lo extraño es que el comportamiento de xBrowse es raro. No puedo ir recorriendolo
con la flecha, ya que el xBrowse se saltea algun registro mostrado.

local cTexto:= "Algo a buscar"
DBSelectArea(DBLISTA)
(DBLISTA)->(AdsClearAOF())
(DBLISTA)->(OrdScope(0,))
(DBLISTA)->(OrdScope(1,))
(DBLISTA)->(OrdSetFocus('NOMBRE33')) //Filtro FTS
(DBLISTA)->(DbGoTop())
(DBLISTA)->(AdsSetAof( '"' +cTexto+ '" $ P_NOM') )
Mbrw:Refresh(.t.)

La uso para buscar una o mas palabras en la descripcion de un artículo.

Saludos y Gracias

Ruben Fernandez

Re: AdsSetAof()

Posted: Tue Dec 11, 2012 2:52 pm
by JavierVital
Yo lo hago de esta manera :

Code: Select all

    cFil1 := "'"+AllTrim(vFil)+"' $"+"PROVEDOR->PROVEDOR"
    cFil2 := "'"+AllTrim(vFil)+"' $"+"PROVEDOR->NOMBRE"
    cFiltro := "{||"+cFil1+" .OR. "+cFil2+"}"
    gFiltro := '"'+cFil1+' .OR. '+cFil2+'"'
    DbSetfilter(&cFiltro,&gFiltro)
 
la vFil es una cadena que voy tecleando y en el browse se va filtrando

Saludos.

Re: AdsSetAof()

Posted: Tue Dec 11, 2012 5:38 pm
by carlos vargas
Luego de definir tu browse
haz un

SetRddAds( oBrowse )

salu2
carlos vargas

Code: Select all

PROCEDURE SetRddAds( oBrw, lCell, nFreeze )
   LOCAL cAlias  := oBrw:cAlias

   DEFAULT nFreeze := 0 , ;
           lCell   := FALSE

   AEval( oBrw:aCols, {|oCol| oCol:lAllowSizing := FALSE } )

   WITH OBJECT oBrw
      :lRecordSelector        := TRUE
      :nStretchCol            := STRETCHCOL_LAST
      :nColDividerStyle       := LINESTYLE_DARKGRAY
      :lColDividerComplete    := TRUE
      :bClrHeader             := { || { CLR_BLUE,  CLR_BROWTIT, CLR_BLACK } }
      :bClrSelFocus           := { || { CLR_WHITE, CLR_CYAN               } }
      :bClrFooter             := { || { CLR_RED,   CLR_BROWTIT, CLR_BLACK } }
      :bClrSel                := { || { CLR_WHITE, CLR_BLACK              } }
      :l2007                  := FALSE
      :lAllowColHiding        := FALSE
      :lAllowColSwapping      := FALSE
      :lAllowRowSizing        := FALSE
      :lAllowCopy             := FALSE
      :lKinetic               := FALSE
      :lKineticBrw            := FALSE
      :lHScroll               := FALSE
      :nHeaderHeight          := 25
      IF !Empty( cAlias )
         ::bGoTop              := {|| ( cAlias )->( DBGoTop()    ) }
         ::bGoBottom           := {|| ( cAlias )->( DBGoBottom() ) }
         ::bSkip               := {| n | IIf( HB_IsNil( n ), n := 1, ), ( cAlias )->( DbSkipper( n ) ) }
         ::bBof                := {|| ( cAlias )->( Bof() ) }
         ::bEof                := {|| ( cAlias )->( Eof() ) }
         ::bBookMark           := {| n | IIf( HB_IsNil(n), ( cAlias )->( RecNo() ), ( cAlias )->( DBGoTo( n ) ) )}
         IF "ADS" $ ( cAlias )->( RddName() )
            ::bKeyCount        := {|| ( cAlias )->( AdsKeyCount( , , ADS_RESPECTFILTERS ) ) }
            ::bKeyNo           := {| n | IIf( HB_IsNil( n ), ( cAlias )->( AdsKeyNo( , , ADS_RESPECTFILTERS ) ), ( cAlias )->( OrdKeyGoto( n ) ) ) }
         ELSE
            ::bKeyCount        := {|| ( cAlias )->( OrdKeyCount() ) }
            ::bKeyNo           := {|| ( cAlias )->( OrdKeyNo()    ) }
         ENDIF
      ENDIF
      IF nFreeze > 0
         :nFreeze             := nFreeze
      ENDIF
      IF !lCell
         :nMarqueeStyle       := MARQSTYLE_HIGHLROW
      ELSE
         :bClrRowFocus        := { || { CLR_BLACK, RGB( 185, 220, 255 ) } }
         :nMarqueeStyle       := MARQSTYLE_HIGHLCELL
      ENDIF
   END

RETURN
 

Re: AdsSetAof()

Posted: Wed Dec 12, 2012 3:37 am
by RuFerSo
Carlos: Excelente, solo con colocar estas 2 líneas en mi xBrowse quedó funcionando. Ya que las demas definciones las tengo al inicio.

mBrw:bKeyCount := {|| ( DBLISTA )->( AdsKeyCount( , , ADS_RESPECTFILTERS ) ) }
mBrw:bKeyNo := {| n | IIf( HB_IsNil( n ), ( DBLISTA )->( AdsKeyNo( , , ADS_RESPECTFILTERS ) ), ( DBLISTA )->( OrdKeyGoto( n ) ) ) }

Gracias Carlos.


Javier: Muy buena tu función, tomé nota.

Gracias Javier.

Saludos Ruben Fernandez

Re: AdsSetAof()

Posted: Fri Jun 28, 2013 2:53 am
by Miguel Salas
Hola Rufer

Podrias compartirme tu codigo de este articulo de favor.

gracias de antemano
saludos

Re: AdsSetAof()

Posted: Tue Sep 23, 2014 7:23 pm
by VitalJavier
Carlos, Buen dia

Probando tu solución esta muy bien ya no da el salto mal
pero el detalle que tengo 34 usuarios y un catalogo de 8,000 productos
y probando se alenta al hacer la función de buscar algún producto
tecleando varias letras de búsqueda.

Code: Select all

oBrow:bKeyCount := {|| ARTICULOS->( AdsKeyCount( , , ADS_RESPECTFILTERS ) ) }
oBrow:bKeyNo      := {| n | IIf( HB_IsNil( n ), ARTICULOS->( AdsKeyNo( , , ADS_RESPECTFILTERS ) ), ARTICULOS->( OrdKeyGoto( n ) ) ) }
oBrow:bKeyDown  := {|nKey| IIF(nKey=27,oDlg:End(),VALIDAKEYARTICULO1(nKey,oDlg,oBrow))}
 
En la function de VALIDAKEYARTICULO1

Code: Select all

            Select ARTICULOS
            DbGoTop()
            IF !DbSeek(AllTrim(oFil[1,2]))
                DbGoTop()
            ENDIF
            oBrow:Refresh()
 
el seek en esta parte de la función se vuelve lento

Tendras alguna solución para esto, o de que forma buscas ?