Ayuda con FILTER y MARIADB

Ayuda con FILTER y MARIADB

Postby goosfancito » Mon Feb 28, 2022 11:15 am

Hola.
Si
Code: Select all  Expand view  RUN
::vGets[1]:= "Ñ"


Al hacer esto no me filtra
Code: Select all  Expand view  RUN
 

    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
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Postby vilian » Mon Feb 28, 2022 11:37 am

Try It:
Code: Select all  Expand view  RUN

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
vilian
 
Posts: 978
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil

Re: Ayuda con FILTER y MARIADB

Postby goosfancito » Mon Feb 28, 2022 12:26 pm

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: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Postby goosfancito » Mon Feb 28, 2022 12:29 pm

si pongo

Code: Select all  Expand view  RUN
? ::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
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Postby vilian » Mon Feb 28, 2022 1:28 pm

I think it's happening because your filter expression is not in a DBF syntax. Please, try it:
Code: Select all  Expand view  RUN

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
vilian
 
Posts: 978
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil

Re: Ayuda con FILTER y MARIADB

Postby goosfancito » Mon Feb 28, 2022 1:41 pm

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
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Postby vilian » Mon Feb 28, 2022 1:44 pm

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
vilian
 
Posts: 978
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil

Re: Ayuda con FILTER y MARIADB

Postby Willi Quintana » Tue Mar 01, 2022 2:20 am

Hola, yo hago asi:

Code: Select all  Expand view  RUN

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
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Ayuda con FILTER y MARIADB

Postby goosfancito » Tue Mar 01, 2022 11:50 am

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
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Postby Willi Quintana » Tue Mar 01, 2022 2:41 pm

Gossfancito,,, como estas,,, efectivamente es con MaiaDB nativo
Code: Select all  Expand view  RUN
//----------------------------------------------------------------------------------------------------------------------------------------
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
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Ayuda con FILTER y MARIADB

Postby goosfancito » Tue Mar 01, 2022 3:15 pm

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
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Postby cmsoft » Wed Mar 02, 2022 11:36 am

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 view  RUN

SELECT * FROM tu_tabla WHERE  apellido1 LIKE '%Ñ%' COLLATE utf8_spanish_ci
 
User avatar
cmsoft
 
Posts: 1292
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ayuda con FILTER y MARIADB

Postby goosfancito » Wed Mar 02, 2022 8:25 pm

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: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Postby goosfancito » Tue Mar 15, 2022 3:29 pm

Willi,

No me estaría funcionando esto, lo puli hasta llegar a un simple:
Code: Select all  Expand view  RUN
  ::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: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Ayuda con FILTER y MARIADB

Postby goosfancito » Tue Mar 15, 2022 3:39 pm

Cuando miro
::oqry:clastsql
el valor detornado no es el correspondiente al filter, sino al original.
El original es:
Code: Select all  Expand view  RUN
     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/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 25 guests