Hola Alejandro, pues no no funciona como es esperado. En campos num茅ricos parece no funcionar bien.
Creo que el problema est谩 en xBrowse, prueba el siguiente c贸digo en el que incluyo una funci贸n de busqueda con unos peque帽os cambios con referencia a la usada en xBrowse.
#include "fivewin.ch"
#include "xbrowse.ch"
#include "tdolphin.ch"
FUNCTION Main()
LOCAL oServer, oDlg, oQry, oBrw
D_SetCaseSensitive( .T. )
Set_MyLang( "es_ES" )
IF ( oServer := ConnectTo() ) == NIL
RETURN NIL
ENDIF
oQry = oServer:Query( "SELECT id, first, last FROM clientes_copy3 ORDER BY first" )
DEFINE DIALOG oDlg SIZE 565, 480
@ 30, 10 XBROWSE oBrw OBJECT oQry PIXEL SIZE 260, 200 AUTOCOLS AUTOSORT
oBrw:bSeek := { | c | Prueba( c, oBrw ) }
@ 10,10 say oBrw:oSeek prompt "" PIXEL SIZE 300, 15
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED
RETURN NIL
//--------------------------------------------
static FUNCTION Prueba( c, oBrw, cQryWhere )
local oQry := oBrw:oMySql
local nStart
local uData, nNum, lRet
local cSortOrder
static aLastRec := {}
nNum = AScan( oBrw:aCols, {| o | !Empty( o:cOrder ) } )
if nNum < 1
RETURN .f.
endif
cSortOrder = oBrw:aCols[ nNum ]:cSortOrder
if Len( c ) == 1
aLastRec := {}
endif
IF Len( aLastRec ) < Len( c )
IF Len( aLastRec ) == 0
nStart = 1
ELSE
nStart = oQry:RecNo()
ENDIF
AAdd( aLastRec, nStart )
ELSE
ASize( aLastRec, Len( c ) - 1 )
IF Len( aLastRec ) == 0
nStart = 1
ELSE
nStart = ATail( aLastRec )
ENDIF
ENDIF
lRet := ( oQry:Seek( c, cSortOrder, nStart - 1, oQry:LastRec(),!oQry:FieldType( cSortorder )=='N', .T. ) != 0 )
return lRet
#include "connto.prg"
#include "setbrw.prg"