Page 1 of 1

xBrowse - Busqueda Incremental

PostPosted: Thu Dec 01, 2011 3:42 pm
by MarioG
Estimados;
Alguien que me pueda brindar un ej. de esta funcion para un xBrowse en el que despliego el resultado de un Query (uso MariaDB)

muchas gracias
Saludos

Re: xBrowse - Busqueda Incremental

PostPosted: Fri Dec 02, 2011 2:18 pm
by Raymundo Islas M.
Mario,

Si los datos que vas a desplegar son semi-estaticos, a mi me ha funcionado muuuy bien mostrar el contenido del recordset en el xbrowse y despues aplicar un filtro al mismo dependiendo lo que estes buscando.
Yo uso MySQL pero quiero pensar que debe ser muy similar al motor que tu usas.

Saludos

Re: xBrowse - Busqueda Incremental

PostPosted: Fri Dec 02, 2011 2:30 pm
by jbrita
Amigo prueba asi
Local cbusca:=""
LOCAL cSelect:="ma_arti,ma_des1,ma_fami,ma_pcom,ma_flet,ma_comp,ma_desc1,ma_desc2,ma_desc3,sto_ok,bod_ini1,bod_ent1,bod_sal1,ma_con_com,ma_bloqueo"


REDEFINE GET oGet VAR cBusca ID 101 OF oDlg UPDATE FONT oVentPrinc:oFont COLOR CLR_BLUE when .f.

oLbx:bKeyDown := {|nKey| iif( nKey=13,(cKey:=SQLField(cExi_Suc,"ma_arti"),oDlg:End() ),(PlisBuscar(nKey,@cExi_Suc,"exi_suc",nIndex[cVar],oLbx,@cbusca,cSelect),oLbx:Refresh(),oLbx:Refresh(),oGet:Refresh() ))}



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()

return .t.

con tienes para ser una busqueda

ojala te sirva

saludos

Re: xBrowse - Busqueda Incremental

PostPosted: Fri Dec 02, 2011 2:37 pm
by MarioG
Raymundo;
gracias por tu respeusta.
Te cuento: MariaDB es el nuevo motor desarrollado por Michael "Monty" Widenius http://es.wikipedia.org/wiki/MariaDB.
El proyecto de Monty surge en represalia a la politica de Oracle. Y como podrás leer, del enlace de arriba, es compatible con MySQL
Para conectarme con la DB uso Eagle1, que tiene metodos como :Find() y :FindNext(), que es con lo que estoy desarrollando actualmente.
Pero para un browse me resulta mas atractivo la búsqueda incremental y a eso apunta mi consulta.

Saludos

Re: xBrowse - Busqueda Incremental

PostPosted: Fri Dec 02, 2011 2:39 pm
by MarioG
jbrita;
probaré tu propuesta, muchas gracias

Re: xBrowse - Busqueda Incremental

PostPosted: Fri Dec 02, 2011 9:43 pm
by Raymundo Islas M.
Mario,
Por eso te preguntaba acerca de los datos a localizar y mostrar.

Si es un catalogo de clientes que se le hacen muy pocos ajustes ( insert,delete,update) genero el recordset y despues le aplico el filtro de la busqueda.
Si los datos son variables ( historico operaciones, diferentes condiciones, etc ) al estar haciendo el select se usa mucho mas el trafico de datos al server, ahora en caso que sea asi la necesidad, en vez de usar LIKE yo usaria REGEXP ya que me busca y devuelve el valor a buscar en cualquier parte del campo.

Saludos

Re: xBrowse - Busqueda Incremental

PostPosted: Mon Dec 05, 2011 11:31 am
by MarioG
Raymundo;
gracias por tu aporte.
La Tabla prinicipal es de insumos hospitalario, por lo que estimo que las ALTAS/MODIFICACIONES no serán de considerables ajustes.
Por lo que el uso de LIKE sería interesante, de cualquier manera me llama la atención REGEXP, funcion que no conozco y la estudiaré

Saludos

Re: xBrowse - Busqueda Incremental

PostPosted: Tue Dec 06, 2011 12:34 pm
by MarioG
(O.T.) Una cosa mas
Si esto esta SOLUCIONADO, como lo pongo en el texto del Asunto :oops: . Ya que le agrego, pero luego muestra el orignal sin la palabara agregada(?)

gracias