Page 1 of 2
Ayuda con FILTER y MARIADB
Posted: Mon Feb 28, 2022 11:15 am
by goosfancito
Hola.
Si
Al hacer esto no me filtra
Code: Select all | Expand
cWhere := "a.apellido1 LIKE '%" + AllTrim( ::vGets[ 01 ] ) + "%'"
::oQry:SetFilter( cWhere)
::oQry:Requery()
::oBrw:Refresh()
FWDBG ::oQry // me sigue mostrando los datos sin el filter aplicado.
que hago mal?
Re: Ayuda con FILTER y MARIADB
Posted: Mon Feb 28, 2022 11:37 am
by vilian
Try It:
Code: Select all | Expand
cWhere := "a.apellido1 LIKE '%" + AllTrim( ::vGets[ 01 ] ) + "%'"
::oQry:Requery()
::oQry:SetFilter( cWhere)
::oBrw:Refresh()
But, it's important to keep in mind Mr Rao words:
"(b)
Filter expression should be in DBF syntax and evaluated with DBF rules but not in Sql syntax. However, RowSet object tries its best to translate the Sql syntax to Dbf syntax in simple cases."
Re: Ayuda con FILTER y MARIADB
Posted: Mon Feb 28, 2022 12:26 pm
by goosfancito
no funciona. ya lo he probado.
Re: Ayuda con FILTER y MARIADB
Posted: Mon Feb 28, 2022 12:29 pm
by goosfancito
si pongo
me devuelve una cadena vacia.
Re: Ayuda con FILTER y MARIADB
Posted: Mon Feb 28, 2022 1:28 pm
by vilian
I think it's happening because your filter expression is not in a DBF syntax. Please, try it:
Code: Select all | Expand
cWhere := " apellido1 = [TESTE] "
::oQry:Requery()
::oQry:SetFilter( cWhere)
? ::oQry:cFilter
::oBrw:Refresh()
Re: Ayuda con FILTER y MARIADB
Posted: Mon Feb 28, 2022 1:41 pm
by goosfancito
Esta funcionando, ahora pregunto y como seria la sintaxis utilizando LIKE %...%?
Re: Ayuda con FILTER y MARIADB
Posted: Mon Feb 28, 2022 1:44 pm
by vilian
I think in this case, you must change your SQL statement, because operator % doesn't exist in DBF syntax.
Re: Ayuda con FILTER y MARIADB
Posted: Tue Mar 01, 2022 2:20 am
by Willi Quintana
Hola, yo hago asi:
Code: Select all | Expand
cProd := "SELECT productos.cod_producto, productos.producto, productos.precio_venta1, productos.unidad, productos.saldo, productos.cod_proveedor, productos.cod_marca, productos.cod_grupo, productos.codbar1, productos.codbar2, productos.observaciones, proveedor.razon_social, marca.detalle AS marca, grupo.detalle AS grupo "
cProd += "FROM productos "
cProd += "LEFT JOIN proveedor ON productos.cod_proveedor = proveedor.ruc_dni "
cProd += "LEFT JOIN marca ON productos.cod_marca = marca.codigo "
cProd += "LEFT JOIN grupo ON productos.cod_grupo = grupo.codigo "
cProd += "ORDER BY productos.producto"
/*
oProd := oCn:Call( "proc001" ) // lista de productos
oProd := oCn:Execute( "CALL proc001", .t. ) // lista de productos
oProd := oCn:RowSet( "CALL proc001", .t. )
xbrowse(oProd)
*/
eProd := {|| oProd := SQLQry(oCn, oProd, cProd) }
EVAL(eProd)
.....
...
REDEFINE XBROWSE oLbx ;
DATASOURCE oProd ; /// AUTOCOLS ; AUTOSORT LINES ;
FASTEDIT LINES ;
FONT oFont1 ; //
ON CHANGE (oApp:cSeek := "", oSay:Refresh(), cObser := MyCampo(oProd, "observaciones"), oObser:Refresh(), RRefresh(oDat) ) ; //, EVAL(eImg) ) ;
ON DBLCLICK (lOk := .t., oDlg:End()) ;
ID 121 OF oDlg
oCol := oLbx:AddCol()
oCol:bStrData := { || oProd:producto }
oCol:cHeader := "Producto/Servicio"
oCol:bClrStd := { || { IF(oProd:saldo <= 0, CLR_GRAY, CLR_BLUE), CLR_WHITE } }
oCol:nDataStrAlign := AL_LEFT
oCol:nWidth := 480
....
.....
REDEFINE BTNBMP oBusca1 ;
PROMPT "Producto" ;
ACTION (FiltrarTx(oProd, 1, cFiltro), oLbx:Refresh(), oLbx:SetFOcus() ) ;
ID 112 OF oDlg
oBusca1:cToolTip := "Filtrar por Nombre de Producto"
//---------------------------------------------------------------------------------------------------------------------------------------------------
Function FiltrarTx(oProd, nModo, cFiltro)
cFiltro := ALLTRIM(cFiltro)
If nModo = 1
oProd:SetFilter("producto LIKE '%" + cFiltro + "%'")
EndIf
IF nModo = 2
oProd:SetFilter("codbar1 LIKE '%" + cFiltro + "%' OR observaciones LIKE '%" + cFiltro + "%'")
Endif
Return(oProd)
Re: Ayuda con FILTER y MARIADB
Posted: Tue Mar 01, 2022 11:50 am
by goosfancito
WIL!
eso es conn MARIADB nativo con fwh?
porque es la manera que yo intente utilizar y no funciona. No me filtra, de hecho hice el filtro, y lo visualice con el FWDBG y con el XBROWSER ::oQry y nada.
Re: Ayuda con FILTER y MARIADB
Posted: Tue Mar 01, 2022 2:41 pm
by Willi Quintana
Gossfancito,,, como estas,,, efectivamente es con MaiaDB nativo
Code: Select all | Expand
//----------------------------------------------------------------------------------------------------------------------------------------
Function ConetcaDB(oCn, oDlg, oMsg)
TRY
if oCn == nil .or. oCn:Ping() = .F.
If oDlg <> Nil
oMsg:SetText("Conectando")
oDlg:Refresh()
EndIf
oCn := Maria_Connect( {oApp:cHost, "", oApp:cUser, oApp:cPass } )
endif
CATCH
oCn := Nil
END
If oCn = Nil
IF oDlg <> NIl
oMsg:SetText("No Existe Servicio en El Servidor") // + oApp:cHost)
oDlg:Refresh()
Inkey(4)
oDlg:End()
EndIf
Return(Nil)
EndIf
oCn:Execute( "SET SESSION wait_timeout = 86400;" )
Return(oCn)
Re: Ayuda con FILTER y MARIADB
Posted: Tue Mar 01, 2022 3:15 pm
by goosfancito
voy a meterle pata con eso, porque aca no me funciona algo debo estar haciendo mal.
GRACIAS!
Re: Ayuda con FILTER y MARIADB
Posted: Wed Mar 02, 2022 11:36 am
by cmsoft
Hola Gustavo:
Si lo que sigues buscando es la Ñ, hay que ver que codificación tiene la tabla
Prueba agregando a tu query lo siguiente:
Code: Select all | Expand
SELECT * FROM tu_tabla WHERE apellido1 LIKE '%Ñ%' COLLATE utf8_spanish_ci
Re: Ayuda con FILTER y MARIADB
Posted: Wed Mar 02, 2022 8:25 pm
by goosfancito
Hola.
No es solo la Ñ, es que el setfilter en si no me funciona.
Re: Ayuda con FILTER y MARIADB
Posted: Tue Mar 15, 2022 3:29 pm
by goosfancito
Willi,
No me estaría funcionando esto, lo puli hasta llegar a un simple:
Code: Select all | Expand
::oQry:SetFilter( "c6 LIKE '%" + AllTrim( ::vGets[ 01 ] ) + "%'" )
::oQry:ReQuery()
::oBrw:Refresh()
XBROWSER ::oQry
y el xbrowser no me muestra los resultados esperados.
Re: Ayuda con FILTER y MARIADB
Posted: Tue Mar 15, 2022 3:39 pm
by goosfancito
Cuando miro
::oqry:clastsql
el valor detornado no es el correspondiente al filter, sino al original.
El original es:
Code: Select all | Expand
TEXT into cSql
Select
a.id AS c0,
a.idusuario AS c1,
a.nombre1 AS c2,
a.nombre2 AS c3,
a.nombre3 AS c4,
a.nombre4 AS c5,
a.apellido1 AS c6,
a.apellido2 AS c7,
a.nacimiento AS c8,
a.fecha_nac AS c9,
a.direccion AS c10,
a.estadoactual AS c11,
b.id AS c12,
b.usuario AS c13,
a.ida AS c14,
a.idb AS c15,
a.idc AS c16,
c.idusuario AS c17,
c.idcarpeta AS c18
FROM tbcarpetas AS a
Left OUTER JOIN tbautoriza AS b ON a.idusuario = b.id
Left OUTER JOIN tbasignado AS c ON a.id = c.idcarpeta
WHERE c.idusuario = ?
ORDER BY a.apellido1
ENDTEXT
::oQry := ::oCnx:QUERY( cSql, { ::aUsuario[ 1 ] } )