Power Builder - Filtrar con 2 condiciones

   
Vista:

Filtrar con 2 condiciones

Publicado por Angelica (206 intervenciones) el 19/11/2014 02:27:24
Hola chicos no entiendo esto, resulta que quiero filtrar un datawindow por 2 condiciones en 2 campos diferentes, es decir si es que cumple las 2 condiciones filtre y si no que no, entonces he preparado algo así como:

1
2
3
4
5
6
7
8
9
10
11
12
13
if dw_rep_accesorio.rowcount() = 0 then return
 
dw_rep_accesorio.setredraw( false)
choose case upper(text)
case 'SILLA'
dw_rep_software.setfilter("accesorio ='SILLA'")     ///este es el nombre del 1er campo al filtrar "accesorio"
case ' '
dw_rep_software.setfilter("tipo_accesorio > '0'")     //este es el 2do campo a filtrar tipo_accesorio
case else
dw_rep_accesorio.setfilter('')
end choose
dw_rep_accesoriofilter()
dw_rep_accesorio.setredraw( true)

pero cuando lo corro solo filtra el primer campo que es SILLA mas no el OTRO CAMPO QUE TIENE CAMPOS VACÍOS Y NO vacíos. Que puedo hacer ayudita porfa
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de antonio

Filtrar con 2 condiciones

Publicado por antonio (1114 intervenciones) el 19/11/2014 04:11:41
Hola Angélica:

Te hace falta comprobar las dos condiciones ya que con el Choose case solo validas uno por uno y es por eso que no puede filtrar juntos los campos

1
2
3
4
5
6
7
8
9
10
11
if dw_rep_accesorio.rowcount() = 0 then return
 
 dw_rep_accesorio.setredraw( false)
 choose case upper(text)
   case 'SILLA', '' // valida los datos que contengan silla y blanco 
         dw_rep_software.setfilter("accesorio ='SILLA' and tipo_accesorio > '0'")
 case else
    dw_rep_accesorio.setfilter('')
 end choose
    dw_rep_accesoriofilter()
    dw_rep_accesorio.setredraw( true)

Espero te ayude
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar con 2 condiciones

Publicado por Angélica (206 intervenciones) el 19/11/2014 13:32:43
Gracias Antonio por responder, estoy aplicando tu código, pero hace lo mismo no me filtra nada.

Te explico un poquito mejor: En el "campo" accesorio si hay datos (todos) ahora en el campo "tipo accesorio" hay algunos datos y otros campos están vacíos, deseo que filtre solo los que tienen datos en este ultimo campo pero que dependan de las sillas. Es decir si es SILLA entonces que filtre a los que tienen datos en el campo "tipo_accesorio", y los que estén vacíos en este campo no.

Gracias Antonio por tu valiosa ayuda,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar con 2 condiciones

Publicado por angel garcia (55 intervenciones) el 19/11/2014 21:51:27
el código escrito de filtrado es correcto lo que pasa es que tienen que hacer un retrieve luego del filter()

if dw_rep_accesorio.rowcount() = 0 then return

dw_rep_accesorio.setredraw( false)
choose case upper(text)
case 'SILLA', '' // valida los datos que contengan silla y blanco
dw_rep_software.setfilter("accesorio ='SILLA' and tipo_accesorio > '0'")
case else
dw_rep_accesorio.setfilter('')
end choose
dw_rep_accesoriofilter()
dw_rep_accesorio. Retrieve(parametros de retrieve)
dw_rep_accesorio.setredraw( true)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar con 2 condiciones

Publicado por Angélica (206 intervenciones) el 20/11/2014 01:35:35
Ok, correcto, solo que en el segundo campo hay varias características. Deseo con este código verificar si es que tiene texto, entonces que lo filtre pero si esta vacía que no lo filtre, disculpa por el inconveniente, ojala me entiendas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar con 2 condiciones

Publicado por angel garcia (55 intervenciones) el 20/11/2014 17:56:06
CREO QUE SI ENTIENDI CORRECTAMENTE , ESTE SERIA EL FILTRO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if dw_rep_accesorio.rowcount() = 0 then return
 
dw_rep_accesorio.setredraw( false)
choose case upper(text)
case 'SILLA', '' // valida los datos que contengan silla y blanco 
// SI HAY TIPO ACCESORIO FILTRAR
IF LEN(TRIM(dw_rep_accesorio.GetItemString(dw_rep_accesorio.Getrow(),'tipo_accesorio'))) > 0 THEN
      dw_rep_software.setfilter("accesorio ='SILLA' and tipo_accesorio > '0'")
ELSE
      dw_rep_software.setfilter("accesorio ='SILLA'")
END IF
 
case else
dw_rep_accesorio.setfilter('')
end choose
dw_rep_accesoriofilter()
dw_rep_accesorio. Retrieve(parametros de retrieve)
dw_rep_accesorio.setredraw( true)

Saludos ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar con 2 condiciones

Publicado por Angelica (206 intervenciones) el 21/11/2014 16:35:24
Gracias Angel, resulto perfecto, ahora complemento lo que me falta. Gracias por tu aporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar