Hace meses hice por aca mismo la consulta de como hacer una busqueda incremental con xBrowse. En aquella oportunidad logre hacerlo pero con el detalle que estaba trabajando con arreglos de memoria.
Esta vez, el datasource quiero manejarlo con el resultado de una consulta (oQuery) pero no se como hacerlo. Me imagino que es algo sencillo pero el que no sabe es como el que no puede ver.
El xBrowse lo hago desde recursos con Pelles C, y uso MariaDB, Harbour y FW 17.01
Alguien me da una mano?
este es el codigo que estoy manejando.
- Code: Select all Expand view
- #include "fivewin"
Static oBrwUsuarios
Function Fnct_Usuarios()
Local oGetSeek , oBtnBuscar , oFHeadBrw
Local cQuery , cTabla , cSeek
Local cNombre, cNick, cTelf, cStatus
local nKey
Local lFound := .f.
Local lSalir := .f.
if Fnct_CheckActive()
fGetOut('Porque Iniciaste en Otro Equipo')
endif
nKey := 1
cSeek := Spac(35)
cTabla := _cPrefijo+"_usuarios"
cQuery := "Select * from "+cTabla+" ORDER BY nombre;"
TRY
oUsuarios:=_oSqlConex:Query( cQuery )
CATCH
Fnct_MsgErrorBD("NoMySql" , .f. , "No hay conexión a La Base de Datos" , "Sin Acceso a La Red","Error en servicio de Datos",)
_oSqlConex:End()
return .f.
END TRY
_oSqlConex:End()
cNombre:= 1
cNick := 2 // posiciones de los campos dentro del xBrowse
cTelf := 3
cStatus:= 4
*****************************************************************************************************************************************
Define cursor oCursorBar resource 'manito'
Define cursor oCursorIndicador resource 'Indicador'
Define Font oFHeadBrw Name "Segoe UI SemiBold" Size 0, -14
Define Dialog oDlg_Usuarios resource "oDlg_Usuarios" title 'Actualización de Datos de Usuarios'
oDlg_Usuarios:lHelpIcon:=.f.
Redefine get oGetSeek Var cSeek Id 11 of oDlg_Usuarios on change ;
((cSeek:=oGetSeek:GetText(),nkey :=oGetSeek:bKeyDown, Fnct_Seek(cSeek, oGetSeek, nKey ))
Redefine xBrowse oBrwUsuarios Id 10 DATASOURCE oUsuarios AUTOCOLS AUTOSORT COLUMNS 2, 5, 3, 8 ;
HEADERS "Nombre" ,;
"Nick" ,;
"Teléfono" ,;
"Status" ;
FIELDSIZES 245, 98, 186,85 ;
PICTURE nil, nil, nil, nil ;
JUSTIFY AL_LEFT, AL_LEFT, AL_LEFT, AL_LEFT ;
CELL LINES FASTEDIT FOOTERS of oDlg_Usuarios
WITH object oBrwUsuarios
oBrwUsuarios:aCols[cNombre] :oHeaderFont:=oFHeadBrw
oBrwUsuarios:aCols[cNick] :oHeaderFont:=oFHeadBrw
oBrwUsuarios:aCols[cTelf] :oHeaderFont:=oFHeadBrw
oBrwUsuarios:aCols[cStatus] :oHeaderFont:=oFHeadBrw
oBrwUsuarios:nMarqueeStyle := MARQSTYLE_HIGHLROW // para que el apuntador ilumine la fila completa
oBrwUsuarios:l2007 := .f.
oBrwUsuarios:lFooter := .t.
:aCols[cNombre] :bFooter := { || 'Total Usuarios-> '+transform(oUsuarios:Reccount(),"@E 99") }
:lIncrFilter := .T.
:cFilterFld:='nombre'
:lSeekWild := .T.
:oSeek := oGetSeek
FOR nI := 1 TO 4
WITH OBJECT oBrwUsuarios:oCol(nI)
:cSortOrder := nil
:cOrder := nil
END
NEXT
oBrwUsuarios:gotop()
oBrwUsuarios:Refresh()
END
Activate dialog oDlg_Usuarios center
oUsuarios:End()
_oSqlConex:end()
return .t.
********************************************************************************************************************
Static Function Fnct_Seek(cSeek, oGetSeek, nKey )
local cTabla, cWhere
cTabla := _cPrefijo+"_usuarios"
cWhere := "Select * from "+cTabla+" WHERE nombre LIKE '%"+alltrim(cSeek)+"%' ;"
_oSqlConex:=tDolphinSrv():New( _cHost, _cUser, _cPasswordUser, val(_cPuertoMysql),, _cDataBase, { | oConex, nError | SQL_ConnetError( oConex, nError ) })
if _oSqlConex:lError
return .f.
endif
TRY
oUsuarios:=_oSqlConex:Query( cWhere )
CATCH
Fnct_MsgErrorBD("NoMySql" , .f. , "No hay conexión a La Base de Datos" , "Sin Acceso a La Red","Error en servicio de Datos",)
_oSqlConex:End()
return .f.
END TRY
oBrwUsers:SetData(oUsuarios)
oBrwUsers:Refresh()
return .t.