Page 1 of 2

Ayuda con FILTER y MARIADB

Posted: Mon Feb 28, 2022 11:15 am
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?

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

Code: Select all | Expand

? ::oQry:cFilter


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 ] } )