Problema con xbrowse + recordset + busqueda incremental (OK)

Problema con xbrowse + recordset + busqueda incremental (OK)

Postby sjingo » 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 :

Code: Select all  Expand view  RUN
//::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
Code: Select all  Expand view  RUN
oBrw:bSeek := { | c | Busca(c,oRs,oBrw) }
oBrw:oSeek := oSay

Y esta es la funcion que busca
Code: Select all  Expand view  RUN
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
Last edited by sjingo on Thu Sep 04, 2008 3:42 pm, edited 1 time in total.
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Postby nageswaragunupudi » Thu Sep 04, 2008 2:46 am

You may please try this
Code: Select all  Expand view  RUN

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
User avatar
nageswaragunupudi
 
Posts: 10685
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Postby sjingo » Thu Sep 04, 2008 2: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
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Postby nageswaragunupudi » Thu Sep 04, 2008 2:59 pm

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

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

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10685
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Postby sjingo » Thu Sep 04, 2008 3:41 pm

Gracias nageswaragunupudi, funcionó perfecto :D

Saluditos

Marcelo Jingo
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: JoseLuis and 37 guests