Power Builder - DW Reporte

 
Vista:

DW Reporte

Publicado por Jery (1 intervención) el 26/05/2006 00:44:36
Hola amigos tengo una ventana (w_bienes) donde se maneja la informacion de los bienes (escritorios, pc's, sillas, etc) de la empresa por area

Bueno ahora esta ventana tiene q tener la opcion visualizar un reporte, tenia un boton pb_reporte que llamaba a este reporte (w_reporte_bienes):

Parent.ToolbarVisible = FALSE

OpenSheet(w_reporte_bienes, Parent, 1, Layered!)

Ese codigo era antes que me digan q tengo q filtrar por Area y q el reporte me muestre los registros segun el Area.. Ejemplo: Logistica :

Area--Usuario--Bien-...
LOG--XXXXXX--XXXX-...
LOG--XXXXXX--XXXX-...
LOG--XXXXXX--XXXX-...
LOG--XXXXXX--XXXX-...

Para esto eh creado dos opciones

rb_x_area y rb_todos

cuando doy click en rb_x_area me tiene q filtrar segun el area este es mi codigo:

SELECT codigo_area
INTO :ls_CodigoArea
FROM Area
WHERE descripcion_Abreviada = :sle_por_area.Text;

IF Trim(sle_por_area.Text) = '' THEN
MessageBox('Mensaje del Sistema','Ingrese el Area!!!', StopSign!, Ok!)
sle_por_area.Setfocus() //==>sle_por_area es la caja donde filtro el area
RETURN
END IF

//Abro la ventana (w_reporte_bienes) que contiene al DW Reporte (dw_reporte_bienes)
OpenSheet(w_reporte_bienes , Parent, 1, Layered!)

//Paso el filtro a la ventana (w_reporte_bienes) ls_Codigo es la variable de filtro
w_reporte_bienes .dw_reporte_bienes.Retrieve(ls_CodigoArea)

END IF

Observacion 1: En el evento Constructor de w_reporte_bienes tengo:

String ls_Area

SetTransObject(SQLCA)
Retrieve(ls_Area)

Hasta ahi todo correcto... me filtra sin problemas pero cuando doy click en rb_todos no me filtra nada... coloque esto en rb_todos:

Parent.ToolbarVisible = FALSE

//Abro la ventana (w_reporte_bienes) que contiene al DW Reporte (dw_reporte_bienes)
OpenSheet(w_reporte_inventario_cpu, Parent, 1, Layered!)

//Codifique esto para ver si me mostraba todos los registros y nada...
w_reporte_bienes .dw_reporte_bienes.Retrieve('%')

Como puedo hacer para que el mismo reporte me muestre todos los registros.. y si filtro me muestre todos los q coincidan con el filtro..

Estaba pensando hacerlo dos reportes diferentes( ventanas y dw reportes por separado) pero no quiero llenarme de ventanas, por favor me pueden ayudar, espero q me den salida a mi inconveniente.

Gracias de ante mano
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

RE:DW Reporte

Publicado por Developer (1 intervención) el 26/05/2006 03:41:28
En la sintaxis SQL de tu DW en la parte:

Where tu_campo LIKE : tu_argumento

por que seguro tu estas haciendo esto:

Where tu_campo = : tu_argumento

por eso no te sale
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

RE:DW Reporte

Publicado por Eva (5 intervenciones) el 26/05/2006 10:06:53
Por qué no utilizas un filtro???? En el datawindow, cuando realices el retrieve recupera todos los datos, y luego en función del radiobutton que pinches utilizas un SetFilter con un filtro descripcion_Abreviada = sle_por_area.Text y aplicas el filtro si sólo quieres recuperar un departamento o un filtro con "" si quieres recuperar todos.

Mira en la ayuda de power la función setFilter
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

RE:DW Reporte

Publicado por Jorge (900 intervenciones) el 26/05/2006 13:53:16
Hola

Tiene razon de utilizar los SetFilter
pero tambien puedes invocar diferentes
dw que las tengas definidas por cada
tipo de recuperacion que desee
utilizando la propiedad DataObject

dw_1_articulo.SetRedraw(False)
If .... Then
dw_1_articulo.DataObject="d_articulo_todos"
Else
dw_1_articulo.DataObject="d_articulo_mesas"
end if
dw_1_articulo.SetTransObject(Sqlca)
dw_1.Retrieve()
dw_1_articulo.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

RE:DW Reporte

Publicado por TEAM EXPERT (2 intervenciones) el 26/05/2006 17:47:36
Las tres opciones son buenas pero una muy recomendable y muy buena que siempre utilizo es que en la propia sentencia del sql maneje la opcion de traer todo o solo algunos datos deacuerdo a el parametro de recuperacion

SELECT *
FROM TABLA
WHERE ISNULL(CAMPO, '') = CASE :PARAMETRO WHEN '' THEN ISNULL(CAMPO, '') ELSE :PARAMETRO END

entonces esto funcionara deacuerdo al parametro que le mandes desde tu ventana : cuando le dees click en todos al argumento enviale un especio en blanco y cuando le dees click en uno le envias el valor del area al argumento
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