¿se puede hacer con xBrowse?

¿se puede hacer con xBrowse?

Postby mgsoft » Wed Aug 03, 2011 1:11 pm

Hola.

Me gustaría saber si se puede hacer con xBrowse, para que los resultados se actualicen inmediatamente según se escribe.

Image


Vídeo de ejemplo: http://www.mediafire.com/?dxm8190tuai1yem

Gracias ;)
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: ¿se puede hacer con xBrowse?

Postby RSalazarU » Wed Aug 03, 2011 2:58 pm

Hola MgSoft
No entiendo claramente lo que quieres, pero yo tengo esta funcion para algo parecido

Code: Select all  Expand view  RUN
//----------------------------------------------------------------------------//
//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
 


y la forma de llamarlo es:

Code: Select all  Expand view  RUN
oGet:bChange := {|nKey, nFlags, oGet| CLIE_VIEW->(GetLookUp(nKey, nFlags, oGet, "CODIGO", "CODIGO" )) }


donde mi tabla de clientes esta ordenado por el campo "CODIGO"

y tambien

Code: Select all  Expand view  RUN
oGet:bChange := {|nKey, nFlags, oGet| CLIE_VIEW->(GetLookUp(nKey, nFlags, oGet, "NOMBRE", "NOMBRE" )) }


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…
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia

Re: ¿se puede hacer con xBrowse?

Postby mgsoft » Wed Aug 03, 2011 3:12 pm

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.
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: ¿se puede hacer con xBrowse?

Postby carlos vargas » Wed Aug 03, 2011 3:21 pm

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
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ¿se puede hacer con xBrowse?

Postby joseluisysturiz » Wed Aug 03, 2011 3:25 pm

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.. :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: ¿se puede hacer con xBrowse?

Postby mgsoft » Wed Aug 03, 2011 3:27 pm

¿Habéis visto el vídeo?.

Allí se ve dinámicamente los cambios, pero LOCATE FOR sólo iría a la primera coincidencia de ado, no saldrían todos que es lo que quiero.
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: ¿se puede hacer con xBrowse?

Postby jbrita » Wed Aug 03, 2011 3:56 pm

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.
jbrita
 
Posts: 504
Joined: Mon Jan 16, 2006 3:42 pm

Re: ¿se puede hacer con xBrowse?

Postby Manuel Aranda » Wed Aug 03, 2011 5:47 pm

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:
Code: Select all  Expand view  RUN

......
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 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: ¿se puede hacer con xBrowse?

Postby Ruben Fernandez » Thu Aug 04, 2011 2:01 pm

Hola amigos:

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
 
Posts: 366
Joined: Wed Aug 30, 2006 5:25 pm
Location: Uruguay

Re: ¿se puede hacer con xBrowse?

Postby nageswaragunupudi » Thu Aug 04, 2011 7:37 pm

Regards

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

Re: ¿se puede hacer con xBrowse?

Postby acuellar » Fri Aug 05, 2011 7:35 pm

Thanks G. N. Rao.

Very good the sample

You can do with Scope

Regards,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1645
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: ¿se puede hacer con xBrowse?

Postby nageswaragunupudi » Sat Aug 06, 2011 5:25 am

acuellar wrote:Thanks G. N. Rao.

Very good the sample

You can do with Scope

Regards,

Adhemar

Scopes are not useful for Mgsoft's requirement.
Regards

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

Re: ¿se puede hacer con xBrowse?

Postby acuellar » Sat Aug 06, 2011 3:03 pm

Thanks G. N. Rao.

Regards,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1645
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: ¿se puede hacer con xBrowse?

Postby JavierVital » Sat Aug 06, 2011 3:20 pm

yo lo tengo por un filter y realmente lo hace rapido
por cada tecla q presionas va filtrando
User avatar
JavierVital
 
Posts: 105
Joined: Thu Feb 26, 2009 4:08 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 23 guests