Ayuda con FILTER y MARIADB

User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Ayuda con FILTER y MARIADB

Post by goosfancito »

Hola.
Si

Code: Select all | Expand

::vGets[1]:= "Ñ"


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?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
vilian
Posts: 985
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Ayuda con FILTER y MARIADB

Post 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."
Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Post by goosfancito »

no funciona. ya lo he probado.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Post by goosfancito »

si pongo

Code: Select all | Expand

? ::oQry:cFilter


me devuelve una cadena vacia.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
vilian
Posts: 985
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Ayuda con FILTER y MARIADB

Post 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()
Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Post by goosfancito »

Esta funcionando, ahora pregunto y como seria la sintaxis utilizando LIKE %...%?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
vilian
Posts: 985
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Ayuda con FILTER y MARIADB

Post by vilian »

I think in this case, you must change your SQL statement, because operator % doesn't exist in DBF syntax.
Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
User avatar
Willi Quintana
Posts: 1025
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: Ayuda con FILTER y MARIADB

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

 
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Post 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.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
Willi Quintana
Posts: 1025
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: Ayuda con FILTER y MARIADB

Post 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)
 
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Post by goosfancito »

voy a meterle pata con eso, porque aca no me funciona algo debo estar haciendo mal.

GRACIAS!
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
cmsoft
Posts: 1297
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina
Been thanked: 2 times

Re: Ayuda con FILTER y MARIADB

Post 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
 
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Post by goosfancito »

Hola.

No es solo la Ñ, es que el setfilter en si no me funciona.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Post 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.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Post 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 ] } )
 
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Post Reply