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 ?