¿se puede hacer con xBrowse?
¿se puede hacer con xBrowse?
Hola.
Me gustaría saber si se puede hacer con xBrowse, para que los resultados se actualicen inmediatamente según se escribe.
Vídeo de ejemplo: http://www.mediafire.com/?dxm8190tuai1yem
Gracias
Me gustaría saber si se puede hacer con xBrowse, para que los resultados se actualicen inmediatamente según se escribe.
Vídeo de ejemplo: http://www.mediafire.com/?dxm8190tuai1yem
Gracias
Saludos,
Eduardo
Eduardo
Re: ¿se puede hacer con xBrowse?
Hola MgSoft
No entiendo claramente lo que quieres, pero yo tengo esta funcion para algo parecido
y la forma de llamarlo es:
donde mi tabla de clientes esta ordenado por el campo "CODIGO"
y tambien
donde mi tabla de clientes esta ordenado por el campo "NOMBRE"
Espero te sirva
Atentamente,
Rolando Salazar U.
SAURO SOFTWARE SRL.
Email: SauroSrl@entelnet.bo
MSN: SauroSrl@hotmail.com
Cochabamba - Bolivia
PD.
No se olvide visitar la pagina de Sauro Srl. http://WWW.SAURO-SYS.COM
Descargue los programas y haga una prueba, y si le sirven ….. compre una licencia…
No entiendo claramente lo que quieres, pero yo tengo esta funcion para algo parecido
Code: Select all
//----------------------------------------------------------------------------//
//GetLookUp(nKey, nFlags, oGet, cCampo, cTag ) Busca en una tabla, en el indice cTag, oGet:VarGet
//si lo encuentra rellena a oGet con el resto del campo
FUNCTION GetLookUp(nKey, nFlags, oGet, cCampo, cTag, lLast )
LOCAL nPos
//LOCAL cOrden, nRecno
if nKey = 46 .AND. (nFlags = 22216705 .OR. nFlags = 1095958529) //Del key (nFlags=22216705->1 pres, nFlags=1095958529=multiple pres)
Return NIL
endif
IF VALTYPE(oGet:VarGet())$"CM" .AND. nKey >= 32 .AND. nKey <= 255
nPos:=oGet:nPos
oGet:Assign()
//nRecno:=Recno()
//cOrden:=OrdSetFocus(cTag)
OrdSetFocus(cTag)
//IF DBSeek(UPPER(LEFT(oGet:VarGet(),nPos-1)),,lLast)
IF DBSeek(LEFT(oGet:VarGet(),nPos-1),,lLast)
oGet:cText( Compile(cCampo) )
ELSE
//oGet:cText( PADR(UPPER(LEFT(oGet:VarGet(),nPos-1)), LEN(Compile(cCampo))) )
oGet:cText( PADR(LEFT(oGet:VarGet(),nPos-1), LEN(Compile(cCampo))) )
ENDIF
oGet:SetPos(nPos)
//OrdSetFocus(cOrden)
//DBGoTo(nRecno)
ENDIF
RETURN oGet
Code: Select all
oGet:bChange := {|nKey, nFlags, oGet| CLIE_VIEW->(GetLookUp(nKey, nFlags, oGet, "CODIGO", "CODIGO" )) }
y tambien
Code: Select all
oGet:bChange := {|nKey, nFlags, oGet| CLIE_VIEW->(GetLookUp(nKey, nFlags, oGet, "NOMBRE", "NOMBRE" )) }
Espero te sirva
Atentamente,
Rolando Salazar U.
SAURO SOFTWARE SRL.
Email: SauroSrl@entelnet.bo
MSN: SauroSrl@hotmail.com
Cochabamba - Bolivia
PD.
No se olvide visitar la pagina de Sauro Srl. http://WWW.SAURO-SYS.COM
Descargue los programas y haga una prueba, y si le sirven ….. compre una licencia…
Re: ¿se puede hacer con xBrowse?
Muchas gracias.
Si te fijas en el vídeo, si pones en el GET ado, aparecen CLIENTE CONTADO y ALVARO ES UN PESADO.
Se trata por tanto de buscar indistíntamente mayúsculas/minúsculas y que aparezcan dinámicamente los registros que cumplen esa condición del campo especificado (Nombre).
Creo que no es posible.
Si te fijas en el vídeo, si pones en el GET ado, aparecen CLIENTE CONTADO y ALVARO ES UN PESADO.
Se trata por tanto de buscar indistíntamente mayúsculas/minúsculas y que aparezcan dinámicamente los registros que cumplen esa condición del campo especificado (Nombre).
Creo que no es posible.
Saludos,
Eduardo
Eduardo
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: ¿se puede hacer con xBrowse?
casi estoy seguro que es form usa un "select ... from ... like ... to tablatmp" en un evento que se dispara cada vez que se introduce un caracter y el grid tiene asignado su datasource a tablatmp.
salu2
carlos vargas
salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: ¿se puede hacer con xBrowse?
Si lo pudes hacer, ya lo he visto en el foro, es en vez de una busqueda secuencia, es una busqueda de un valor en una cadena, en este caso le especificas la VAR contendeora de la cadena y listo, algo parecido a un LOCATE y CONTINUE, si lo veo te agrego el link...saludos..
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: ¿se puede hacer con xBrowse?
¿Habéis visto el vídeo?.
Allí se ve dinámicamente _, pero LOCATE FOR sólo iría a la primera coincidencia de ado, no saldrían todos que es lo que quiero.
Allí se ve dinámicamente _, pero LOCATE FOR sólo iría a la primera coincidencia de ado, no saldrían todos que es lo que quiero.
Saludos,
Eduardo
Eduardo
Re: ¿se puede hacer con xBrowse?
Amigo si lo quieres hacer con SQL se aplica asi
SELECT * FROM CLIENTE WHERE nombre LIKE "%RIVERA%"
y con funcion es asi:
Local cbusca:=""
REDEFINE GET oGet VAR cBusca ID 101 OF oDlg UPDATE FONT oVentPrinc:oFont COLOR CLR_BLUE when .f.
y dentro del browse xbrowse
oLbx:bKeyDown := {|nKey| iif( nKey=13,(cKey:=SQLField(cExi_Suc,"ma_arti"),paso:=1,oDlg:End() ),(PlisBuscar(nKey,@cExi_Suc,"exi_suc",nIndex[cVar],oLbx,@cbusca,cSelect),oLbx:Refresh(),oLbx:Refresh(),oGet:Refresh() ))}
la funcion PLISBUSCAR
***************************
FUNCTION PlisBuscar(nKey,oDatos,oTabla,oOrden,oLbx,cbusca,cSelect)
*-----------------------------------------------------
Local cQuery,campo
DEFAULT cSelect := "*"
If nKey=8
cbusca:= SubStr(cbusca,1,Len(cbusca)-1)
cQuery:="SELECT "+ cSelect + " FROM "+oTabla+" WHERE "+oOrden+" LIKE '"+UPPER(cBusca)+"%' ORDER BY "+oOrden+" LIMIT 100"
oDatos:=oServer:Query(cQuery,.T.)
Else
If nKey=190
cbusca :=cbusca + "."
Else
cbusca :=cbusca + Upper(chr(nkey))
Endif
cQuery:="SELECT "+ cSelect +" FROM "+oTabla+" WHERE "+oOrden+" LIKE '"+UPPER(cBusca)+"%' ORDER BY "+oOrden+" LIMIT 100"
oDatos:=oServer:Query(cQuery,.T.)
If oDatos:Reccount() == 0
cbusca:=left(cbusca,len(cbusca)-1)
cQuery:="SELECT "+ cSelect +" FROM "+oTabla+" WHERE "+oOrden+" LIKE '"+UPPER(cBusca)+"%' ORDER BY "+oOrden+" LIMIT 100"
oDatos:=oServer:Query(cQuery,.T.)
Endif
Endif
Setxbrowse(oLbx, oDatos ) // importante para la navegacion
oDatos:Refresh()
oLbx:Refresh(.t.)
oLbx:SetFocus()
oDatos:GOTOP()
SALUDO
return .t.
SELECT * FROM CLIENTE WHERE nombre LIKE "%RIVERA%"
y con funcion es asi:
Local cbusca:=""
REDEFINE GET oGet VAR cBusca ID 101 OF oDlg UPDATE FONT oVentPrinc:oFont COLOR CLR_BLUE when .f.
y dentro del browse xbrowse
oLbx:bKeyDown := {|nKey| iif( nKey=13,(cKey:=SQLField(cExi_Suc,"ma_arti"),paso:=1,oDlg:End() ),(PlisBuscar(nKey,@cExi_Suc,"exi_suc",nIndex[cVar],oLbx,@cbusca,cSelect),oLbx:Refresh(),oLbx:Refresh(),oGet:Refresh() ))}
la funcion PLISBUSCAR
***************************
FUNCTION PlisBuscar(nKey,oDatos,oTabla,oOrden,oLbx,cbusca,cSelect)
*-----------------------------------------------------
Local cQuery,campo
DEFAULT cSelect := "*"
If nKey=8
cbusca:= SubStr(cbusca,1,Len(cbusca)-1)
cQuery:="SELECT "+ cSelect + " FROM "+oTabla+" WHERE "+oOrden+" LIKE '"+UPPER(cBusca)+"%' ORDER BY "+oOrden+" LIMIT 100"
oDatos:=oServer:Query(cQuery,.T.)
Else
If nKey=190
cbusca :=cbusca + "."
Else
cbusca :=cbusca + Upper(chr(nkey))
Endif
cQuery:="SELECT "+ cSelect +" FROM "+oTabla+" WHERE "+oOrden+" LIKE '"+UPPER(cBusca)+"%' ORDER BY "+oOrden+" LIMIT 100"
oDatos:=oServer:Query(cQuery,.T.)
If oDatos:Reccount() == 0
cbusca:=left(cbusca,len(cbusca)-1)
cQuery:="SELECT "+ cSelect +" FROM "+oTabla+" WHERE "+oOrden+" LIKE '"+UPPER(cBusca)+"%' ORDER BY "+oOrden+" LIMIT 100"
oDatos:=oServer:Query(cQuery,.T.)
Endif
Endif
Setxbrowse(oLbx, oDatos ) // importante para la navegacion
oDatos:Refresh()
oLbx:Refresh(.t.)
oLbx:SetFocus()
oDatos:GOTOP()
SALUDO
return .t.
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: ¿se puede hacer con xBrowse?
Hola MgSoft,
supongo que se podrá hacer con xBrowse. Es cuestión de probar. Yo lo tengo implementado en un listbox y funciona correctamente. Eso sí, usa dbSetFilter, por lo que si el fichero de datos es muy grande la lentitud tal vez sea excesiva. Te pego aquí algo de código a ver si lo puedes adaptar:
supongo que se podrá hacer con xBrowse. Es cuestión de probar. Yo lo tengo implementado en un listbox y funciona correctamente. Eso sí, usa dbSetFilter, por lo que si el fichero de datos es muy grande la lentitud tal vez sea excesiva. Te pego aquí algo de código a ver si lo puedes adaptar:
Code: Select all
......
oBj1[9]:bkeydown:={|nKey|DOKEYCHECK(nKey,oBj1[9],oSay2,oDlg,oBj1,@cTecla)}
......
************************************************************
STATIC FUNCTION DOKEYCHECK(nKey,oLbx,oSay2,oDlg,oBj1,cTecla)
************************************************************
*------SINGLE CHARACTER BROWSE SEARCHER----------------------
&& Note ASCII values: 65-90 are Capital A through Z.
&& : 97-122 are lowercase a through z.
&& : 48-57 are numbers 0-9.
&& : 13 used below is for a RETURN key hit.
//
IF nKEY>=65 .AND. nKEY<=90 .OR. nKEY>=97 .AND. nKEY<=122 .OR. nKEY >=48 .AND. nKEY<=57 .OR. nKey = VK_SPACE
//
//cKey:=cKey+UPPER(CHR(nKEY))
cTecla:=cTecla+UPPER(CHR(nKEY))
//
oSay2:SetText(cTecla)
oSay2:Refresh()
FilTexto(cTecla,"AGENDA",oDlg,oLbx)
oLbx:oVscroll:setpos(recno()) && Refresh browser object sequence...
oLbx:refresh() &&
oLbx:UpStable() && Stablize
SysRefresh()
RETURN( NIL ) && Drop out!
ENDIF
//
DO CASE
*/
CASE nKEY == VK_BACK
//
cTecla=substr(cTecla,1,len(cTecla)-1)
FilTexto(cTecla,"AGENDA",oDlg,oLbx)
oSay2:SetText(cTecla)
oSay2:Refresh()
CASE nKEY == VK_DELETE
//
cTEcla=""
FilTexto(cTecla,"AGENDA",oDlg,oLbx)
oSay2:SetText(cTecla)
oSay2:Refresh()
CASE nKEY == VK_RETURN
(AgendaAltaModi(oLbx,"Ver/Modificar texto",.F.),oLbx:Refresh(),oLbx:SetFocus())
//
CASE nKEY == VK_INSERT
(AgendaAltaModi(oLbx,"Alta de nuevo registro",.T.),PonNumero("AGENDA",oBj1),oLbx:Refresh(),oLbx:SetFocus())
//
CASE ( nKey == Asc( "F" ) .OR. nKey == Asc( "f" ) ) .AND. GetKeyState( VK_CONTROL )
ENDCASE
//
RETURN( NIL )
******************************************
FUNCTION FilTexto(cFiltro,cFile,oDlg,oLbx)
******************************************
cFiltro := ALLTRIM(cFiltro)
IF ! EMPTY(cFiltro)
(cFile)->(DBSETFILTER({|| AT(UPPER(cFiltro), UPPER((cFile)->Texto)) > 0 },"AT(UPPER(cFiltro), UPPER((cFile)->Texto)) > 0" ))
ELSE
(cFile)->(DBCLEARFILTER())
ENDIF
(cFile)->(DBGOTOP())
oLbx:Refresh()
oDlg:Update()
RETURN(.T.)
Un saludo,
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
Manuel
xH 1.2.3, FWH 14.09, BC++ 5.8.2, xVerce CW 1.0, PellesC
-
- Posts: 366
- Joined: Wed Aug 30, 2006 5:25 pm
- Location: Uruguay
Re: ¿se puede hacer con xBrowse?
Hola amigos:
Hay una funcion que se llama StrToken(), que quizas pueda servir para lo que necesitan.
Saludos
Ruben Fernandez
Hay una funcion que se llama StrToken(), que quizas pueda servir para lo que necesitan.
Saludos
Ruben Fernandez
Gracias y Saludos
Ruben Fernandez - Uruguay
FWH 11.06, Harbour, Borland 5.82
Ruben Fernandez - Uruguay
FWH 11.06, Harbour, Borland 5.82
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: ¿se puede hacer con xBrowse?
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: ¿se puede hacer con xBrowse?
Thanks G. N. Rao.
Very good the sample
You can do with Scope
Regards,
Adhemar
Very good the sample
You can do with Scope
Regards,
Adhemar
Saludos,
Adhemar C.
Adhemar C.
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: ¿se puede hacer con xBrowse?
Scopes are not useful for Mgsoft's requirement.acuellar wrote:Thanks G. N. Rao.
Very good the sample
You can do with Scope
Regards,
Adhemar
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- JavierVital
- Posts: 105
- Joined: Thu Feb 26, 2009 4:08 pm
- Contact:
Re: ¿se puede hacer con xBrowse?
yo lo tengo por un filter y realmente lo hace rapido
por cada tecla q presionas va filtrando
por cada tecla q presionas va filtrando