FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problema con xbrowse + recordset + busqueda incremental (OK)
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Problema con xbrowse + recordset + busqueda incremental (OK)
Posted: Thu Sep 04, 2008 12:42 AM
Saludos amigos

En la versi贸n de mi xbrowse no tengo implentado los m茅todos para trabajar con recordsets, por lo tanto he tenido que generarlos siguiendo muchos ejemplos que se dan en el foro.

Es as铆 que implement茅 la b煤squeda incremental. En el blog de Biel encontr茅 lo que buscaba, lo prob茅 y funcion贸 bien, excepto por el problema que muchos tuvieron: y es que al ir digitando una letra desaparecen los headers, footers y la barra lateral izquierda del xbrowse, que s贸lo aparecen nuevamente al ir al inicio o al final.

En muchos posts relacionados a este caso se da la soluci贸n comentando :

//::lRefreshOnlyData := .t.

en el m茅todo seek(). Este m茅todo no trabaja con recordsets por lo que no me sirve. Entonces qu茅 puedo hacer para solucionarlo?

Este es parte del c贸digo
oBrw:bSeek := { | c | Busca(c,oRs,oBrw) }
oBrw:oSeek := oSay

Y esta es la funcion que busca
Function Busca(c,oRs,oBrw)
local nlen:=Len(c)
local ncol:=oBrw:nColSel
local cField:=oBrw:acols[ncol]:cheader

static nLenAnt
default nLenAnt:=0
If len(c)>1
	if(nLenAnt>nLen,oRs:MoveFirst(),)
	oRs:Find(cField+space(1)+"LIKE '"+c+"*'",,1)
else
	oRs:MoveFirst()
	If !Empty(c)
		oRs:Find(cField+space(1)+"LIKE '"+c+"*'",,1)
	ENDIF
endif

return !(oRs:Eof .or. oRs:Bof)


D贸nde colocar茅 el c贸digo que regenere lo borrado?
Gracias Anticipadas

Marcelo Jingo
Marcelo Jingo
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Problema con xbrowse + recordset + busqueda incremental (OK)
Posted: Thu Sep 04, 2008 02:46 AM
You may please try this
oBrw:bSeek := { |c| MySeek( c, oBrw ) }

...
...

function MySeek( cSeek, oBrw )

   local lFound   := .f.
   local cField

   cSeek       := Trim( cSeek )
   if oBrw:oRs:RecordCount() > 0 .and. ! Empty( oBrw:oRs:Sort ) .and. Len( cSeek ) > 0
      cField   := StrToken( oBrw:oRs:Sort, 1, ' ' )
      uBm      := oBrw:oRs:BookMark
      oBrw:oRs:Find( cField + " LIKE '" + cSeek + "%'", 0, 1, 1 )
      lFound   := ! ( oBrw:oRs:Eof() )
   endif

return lFound
Regards



G. N. Rao.

Hyderabad, India
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Problema con xbrowse + recordset + busqueda incremental (OK)
Posted: Thu Sep 04, 2008 02:52 PM

nageswaragunupudi

No olvides que tengo FW 2.6 de mayo 2006 por lo que no puedo probar tu soluci贸n. Pues veo que el oRs es una clase de oBrw, que en mi version no est谩 disponible

Recuerden que la b煤squeda funciona perfecto, el problema repito es que se borran los headers, footersy barra izquierda.

Por favor una ayudita.

Marcelo Jingo

Marcelo Jingo
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Problema con xbrowse + recordset + busqueda incremental (OK)
Posted: Thu Sep 04, 2008 02:59 PM

I am not sure, but in Paint method, try replacing

lOnlyData := ::lRefreshOnlyData
with
lOnlyData := .f.

Regards



G. N. Rao.

Hyderabad, India
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Problema con xbrowse + recordset + busqueda incremental (OK)
Posted: Thu Sep 04, 2008 03:41 PM

Gracias nageswaragunupudi, funcion贸 perfecto :D

Saluditos

Marcelo Jingo

Marcelo Jingo

Continue the discussion