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
xBrowse - Busqueda Incremental
xBrowse - Busqueda Incremental
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Re: xBrowse - Busqueda Incremental
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
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
FWH 10.6 + xHarbour + Borland 582
Re: xBrowse - Busqueda Incremental
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
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
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
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
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
Re: xBrowse - Busqueda Incremental
jbrita;
probaré tu propuesta, muchas gracias
probaré tu propuesta, muchas gracias
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Re: xBrowse - Busqueda Incremental
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
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
FWH 10.6 + xHarbour + Borland 582
Re: xBrowse - Busqueda Incremental
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
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
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
Re: xBrowse - Busqueda Incremental
(O.T.) Una cosa mas
Si esto esta SOLUCIONADO, como lo pongo en el texto del Asunto . Ya que le agrego, pero luego muestra el orignal sin la palabara agregada(?)
gracias
Si esto esta SOLUCIONADO, como lo pongo en el texto del Asunto . Ya que le agrego, pero luego muestra el orignal sin la palabara agregada(?)
gracias
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina