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
Chaco - Argentina
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
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
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
jbrita;
probaré tu propuesta, muchas gracias
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
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
(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