• Viernes 29 de Marzo de 2024, 08:07

Autor Tema:  Funcion SetFilter  (Leído 10848 veces)

raultercero

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Funcion SetFilter
« en: Viernes 20 de Octubre de 2006, 02:14 »
0
:huh: Tengo un problema: Quiero ejecutar la funcion setfilter utilizando expresiones. Por ejemplo>

String ls_cadena

ls_cadena = "Nombre LIKE '" + mi_nombre + "%" + "'"
dw_1.setfilter(ls_cadena)
dw_1.filter()

// mi_nombre contiene "DEN'S"  

Al ejecutar la funcion setfilter, me muestra un mensaje
"expresion inválida"

Eh probado de varias maneras y no han resultado, bueno hay una que si me resultó, pero solo en la en vista de diseño, de la sub-opcion Filter de la opción Rows. Ahi el criterio le mando de este modo:

hff02_sdescripcion LIKE "DEN'S%"  

Pero cuando quiero ejecutar este criterio en tiempo de ejecución tengo problemas.
me muestra el asistente este mensaje "Expresión no es valida"

Te agradesco de todas manera....  :devil:

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #1 en: Viernes 20 de Octubre de 2006, 05:33 »
0
Hola


muy sencillo utiliza la comilla doble...

Código: Text
  1.  
  2.  
  3. String ls_cadena,mi_nombre
  4.  
  5. ls_cadena = "Nombre LIKE "+char(34)+ mi_nombre + "%" + char(34)
  6. dw_1.setfilter(ls_cadena)
  7. dw_1.filter()
  8.  
  9.  
  10.  



Suerte
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

raultercero

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #2 en: Viernes 20 de Octubre de 2006, 20:56 »
0
Gracias...

leoandres

  • Miembro activo
  • **
  • Mensajes: 79
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #3 en: Viernes 20 de Octubre de 2006, 21:39 »
0
Saludos...

Si no lo has resuelto, creo que el problema lo tienes con el apostrofe (') en el nombre DEN'S, el powerbuilder lo interpreta como inicio de un string de caracteres que no cierra...
leopoldotaylhardat@hotmail.com

Leopoldo Taylhardat

Software, Organización y Sistemas

Maracay, Venezuela


"En computación solo hay una cosa segura...
   que no hay nada seguro" - Leopoldo Taylhardat

"Cada alternativa que tengas durante la búsqueda,
      será una meta en sí misma" - Jorge Olguín.

Jhois

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #4 en: Martes 1 de Mayo de 2007, 18:07 »
0
Hola, por favor, yo tengo otro problema con filtrar datos en power builder. Ya puedo filtrar datos de una tabla. Pongo el nombre del proveedor y me filtra. Pero lo que quiero es que de lo que esta filtrado, pueda filtrar más aun poniendo una fecha inicial y una fecha final, es decir que me muestre solo lo que se le debe al proveedor pero por ejemplo de 1 de enero a 15 de enero, y no todo el mes.. Ojala me entiendan, y por favor necesito de urg

Gracias

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #5 en: Martes 1 de Mayo de 2007, 18:40 »
0
El filter es como un Having y puedes utilizar varios criterios para hacer el filtro por ejemplo solicitar el proveedor y la fecha inicial y la fecha final y crear el criterio del filtro

En una variable string....

Código: Text
  1. String Criterio
  2.  
  3. Criterios="Proveedor='070550' and (Fecha>=Date('29/03/2007')  and Fecha<=Date('26/04/2007')) "
  4.  
  5. dw_1.SetFilter(Criterios)
  6. dw_1.Filter()
  7.  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Jhois

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #6 en: Martes 1 de Mayo de 2007, 19:13 »
0
Lo que pasa es que en la base de datos esta la fecha como tipo texto, y si, yo pongo lo que tu pusiste, bueno sin el date y sin el proveedor, porque primero ya  se me filtra el proveedor y me queda la tabla solo con ese proveedor y lo que debo y todas las fechas de las deduas, pero solo quiero filtrar con 2 fechas y me sale type expression invalidate

no se como hacer porque a la base de datos ya le cambie a tipo date la fecha porque pense que ese era el problema pero no, me sale el mismo error

el codigo esta ma o menos asi

dw_cuentas.setfilter("compras_fecha >= "+ em_fechai.text +" and compras_fecha <= "+ em_fechaf.text +"")
dw_cuentas.filter()

revisa y me ayudas porfa

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #7 en: Martes 1 de Mayo de 2007, 21:17 »
0
El detalle esta asi:

Si tu quieres filtrar por un campo texto es necesario que los valores lleven comillas
ejemplo:

Citar
em_fechai.text='23/11/2007'

Citar
"compras_fecha >= "+ em_fechai.text  (si lo vemos con datos seria algo asi),

"compras_fecha >= 23/11/2007"

entonces si el campo compras_fecha es texto la expresion no es valida
debe de ser le valor entre comillas ('):

Citar
"compras_fecha >= '23/11/2007'"

Para lograr eso es necesario concatenarle las comillas asi:

Código: Text
  1. &#34;compras_fecha &#62;= '&#34;+ em_fechai.text +&#34;'&#34;
  2.  

Ese detalle es para los campos tipo texto (varchar,char ...) tu puedes resolver el filtro que estas aplicando
concatenado comillas
Código: Text
  1.  
  2. &#34;compras_fecha &#62;= '&#34;+ em_fechai.text +&#34;' and compras_fecha &#60;= '&#34;+ em_fechaf.text +&#34;'&#34;
  3.  
  4.  

Pero el resultado no seria el esperado, debido a que no estas estableciendo un rango de fechas pues estas comparando
cadenas

si tu campo es tipo texto y quieres un rango de fechas es necesario convertir el dato del campo en una fecha
(no se necesario cambiar el tipo de dato en la bd, si no se desea) a traves de la funcion Date seria asi

Código: Text
  1.  
  2. ls_Filtro=&#34;Date(compras_fecha) &#62;= Date('&#34;+ em_fechai.text +&#34;') and Date(compras_fecha) &#60;= Date('&#34;+ em_fechaf.text +&#34;')&#34;
  3.  
  4. dw_cuentas.SetFilter(ls_Filtro)
  5. dw_cuentas.Filter()
  6.  
  7.  

asi comparas fechas contra fechas :)

Otro detalle, no es posible aplicar un filtro sobre datos filtrados en el mismo DW pues al colocar el filtro
(SetFilter) y ejecutarlo (Filter) se elimina el anterior aplicando el nuevo por eso es necesario aplicar todos los
criterios en un solo filtro

Código: Text
  1.  
  2. ls_Filtro=&#34;Proveedor='Solocodigo' and Date(compras_fecha) &#62;= Date('&#34;+ em_fechai.text +&#34;') and Date(compras_fecha) &#60;= Date('&#34;+ em_fechaf.text +&#34;')&#34;
  3.  
  4. dw_cuentas.SetFilter(ls_Filtro)
  5. dw_cuentas.Filter()
  6.  
  7.  
  8.  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Jhois

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #8 en: Miércoles 2 de Mayo de 2007, 16:30 »
0
Que bien muchas gracias, intente transformando a date, y no valia, pues me ha faltado de poner comillas(')...

Ya funcionó muchas gracias

Se ve que tu sabes mucho de esto, sabes que me me gustaría saber mucho más de este lenguaje, estoy interesada en ser buena programadora, pero a veces las ideas se me van, y no se que hacer...
Mira talvés si me puedes ayudar, como puedo hacer que esto que estoy filtrando, imprimir, que me aparezca la pantallita para escoger impresora, y despues imprimir y que me imprima y que me salga una vista preliminar en word...

Mira, no se si hay como imprimir una ventana, para yo poner de titulo en un sle por ejemplo deudas, e imprimir los detalles del data window, o tengo que hacer algun reporte? pues no se como hacer reportes, talves me ayudas?

Te lo agradezco mucho... me has ayudado mucho, y quisier tener aun tu ayuda, gracias

Atentamente
Amiga agradecida

Jhois

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #9 en: Miércoles 2 de Mayo de 2007, 16:57 »
0
:rolleyes: Por cierto leí lo que el administrador escribió, y lo que en tu respuesta dice que se lea en Importante... Pues lo leí, y me parece interesante, yo antes que nada quiero decir que sí he buscado en internet, he visto libros, pero a ellos no puedo preguntarle mi problema, en cambio a alguien como tu que nos ayuda, da más confianza y se pregunta.... Bueno muchas gracias, y porfa, desde hace días ando buscando lo de la impresíón, o si tengo que hacer antes un reporte, pero no encuentro...

Mira, yo quise hacer esto:

ls_Filtro="proveedores_nombre like '%"+sle_text.text+"%' and Date(compras_fecha) >= Date('"+ em_fechai.text +"') and Date(compras_fecha) <= Date('"+ em_fechaf.text +"')"

dw_cuentas.SetFilter(ls_Filtro)
dw_cuentas.Filter()

Y me sale un error de true/false

algo esta mal, prove pero no sale. Funcionó solo con la fecha, pero añadi el proveedor y ya no valió!! :(

Por favor, si pueden ayudarme, lo agradezco mucho.


Jhois :D

boystone22

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #10 en: Lunes 23 de Julio de 2007, 10:35 »
0
hola...

yo tambien tuve el mismo problema.... pensando y dandole vueltas al asunto no se que me dio por voltear el codigo. mas o menos quedó asi:

DW_1.SETFILTER( "TIPO_EXP_ESTADO = '" +  SLE_1.TEXT + "' AND TIPO_EXP_DESC LIKE '%" + TEXTO.TEXT+ "%'")

DW_1.FILTEr( )

espero q te sirva, de seguro soy un novato entre los novatos

jorge2007

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #11 en: Martes 30 de Octubre de 2007, 18:59 »
0
Hola que tal necesito filtrar en un datawindows todas los paises que comienzan con una determinada letra.
ejemplo:

Ecuador
Estados Unidos
España
El salvador

con la funcion setfilter se filtran todos los nombre que son iguales pero necesito que cuando se escriba cualquier letra me filtre los paises con esa letra.

por su ayuda que me puedan prestar les agradezco mucho.

Soultaker

  • Miembro HIPER activo
  • ****
  • Mensajes: 972
  • Nacionalidad: pe
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #12 en: Domingo 4 de Noviembre de 2007, 00:24 »
0
Amigo eso es facil, creo que todavia siguen entrando a el foro a pedir que le hagan sus tareas, amigo porque no usas la ayuda de POWER BUILDER, ahi vas a encontrar la solucion.

 :comp:
http]
foros,programacion, c, c++, java,
linux, videojuegos, directX, .NET,
visual basic,robotica,microprocesadores

Para los nuevos usuarios de este Foro, por favor leerse esta discusión.
Cómo Hacer Preguntas De Forma Inteligente

Ojos que no ven... pisan caquita
Camarón que se duerme... muere electrocutado


<<< Harol Moreyra Bendezú >>>

Isabellina

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #13 en: Lunes 10 de Noviembre de 2008, 17:13 »
0
:hola: Hola amigos del foro, tengo un problemita similar, espero me puedan ayudar, tengo un filtro y no me responde al elegir algunas de las opciones,

if data='0' then
   uo_1.dw_1.SetFilter("")
else
   uo_1.dw_1.SetFilter("year(fecha_produccion_r)+month(fecha_produccion_r)="+data+"")
end if
uo_1.dw_1.Filter()

despues del else quise obtener el año, el mes del campo fecha_produccion y unirlos para hacer las comparaciones con data ya que data tiene el año y el mes de dicho campo, pero al filtrar simplemente no me responde  :bad: y no me marca ningun error, cual creen que pueda ser mi problema?
Muchas gracias amigos del foro y espero y alguien pueda darme una pista, gracias!!!
 :good:

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Funcion SetFilter
« Respuesta #14 en: Lunes 10 de Noviembre de 2008, 20:05 »
0
year(fecha_produccion_r)+month(fecha_produccion_r) <--- Esto hara una suma ya que los dato son numericos


Ejemplo:

fecha_produccion_r = 2008-11-10

year =2008
month = 11

(2008)+(10)  = 2018

Supongo que estas intentando comparar

data='200810'

y el filtro no correspondera

Código: Visual Basic
  1. uo_1.dw_1.SetFilter("2018="+200810+"")
  2.  

Prueba de esta manera
Código: Visual Basic
  1. uo_1.dw_1.SetFilter("string(year(fecha_produccion_r))+string(month(fecha_produccion_r))='"+data+"'")
  2.  

y nos avisas
Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================