PDA

Ver la Versión Completa : Datos repetidos en un master/detail de rave report


mcalmanovici
12-10-2007, 16:29:10
Hola gente:
Antes que nada, gracias por su tiempo.
tengo el siguiente problema con rave report que lo he buscado en los hilos pero no encontré nada al respecto:
quiero hacer un master/detail pero cuando lo hago me esta dando todos los datos duplicados, es decir:
Me da:
usuario: ezequiel.
fecha numero comentario
12/10/2007 1 primer comentario
12/10/2007 2 segundo comentario
12/10/2007 3 tercer comentario

usuario: ezequiel
fecha número comentario
12/10/2007 1 primer comentario
12/10/2007 2 segundo comentario
12/10/2007 3 tercer comentario

....

y me debería aparecer
usuario: ezequiel
fecha número comentario
12/10/2007 1 primer comentario
12/10/2007 2 segundo comentario
12/10/2007 3 tercer comentario

usuario: mariano
fecha número comentario
10/10/2007 1 comenario de mariano 1
10/10/2007 2 comenario de mariano 2

Para esto lo que tengo es dos TSQLDataSet con sus DataSetProvider y sus ClientDataSet (uno para el maestro y otro para el detalle), en uno de los sql tengo la consulta: select u.usuario_des, u.usuario_id from reporte r, usuario u where r.usuario_id = u.usuario_id order by u.usuario_des
y en el otro: select area_des, proyecto_des, fecha, comentario, usuario_id from reporte r, proyecto p, area a where r.proyecto_id = p.proyecto_id and r.area_id = a.area_id

Ya en el diseño del rave reporte genero los dataviews de cada uno mediante file-new data object y después genero el master detail en tools-reports wizard-master/detail report y los uno por el campo usuario_id.

Bueno, si alguien tiene alguna pista para darme se lo agradeceré.

Saludos.
Mariano.

elarys
14-01-2010, 16:10:37
Proba una sola consulta

SELECT U.usuario_des, U.usuario_id, area_des, proyecto_des, fecha, comentario
FROM Reporte R
LEFT JOIN Usuario U ON (R.usuario_id = U.usuario_id)
LEFT JOIN Proyecto P ON (R.proyecto_id = P.proyecto_id)
LEFT JOIN Area A ON (R.area_id = A.area_id)


Y en el reporte aunque yo uso Fast Report no se como seria en Rave Report, pero te doy la idea

GroupHeader DataSource."usuario_id"
usuario: DataSource."usuario_des"

fecha comentario

MasterData DataSource
DataSource."fecha" DataSource."comentario"




DataSource."usuario_id" = en Fast Report el GroupHeader apunta al DataSouce el cual esta filtrado por el id principal
fecha y comentario estan fuera del masterdata ya que son los titulos

Luego le mandas la consulta nota en donde el where haga lo que quieras siempre y cuando le pases al menos el usuario_id

SELECT U.usuario_des, U.usuario_id, area_des, proyecto_des, fecha, comentario
FROM Reporte R
LEFT JOIN Usuario U ON (R.usuario_id = U.usuario_id)
LEFT JOIN Proyecto P ON (R.proyecto_id = P.proyecto_id)
LEFT JOIN Area A ON (R.area_id = A.area_id)
WHERE U.usuario_id = 1 OR U.usuario_id = 2


1 = Ezequiel
2 = Mariano

Si no filtras te mostraria todo los registros de tu tabla

pd: seria mi idea alguien que sepa Rave Report se lo pase en limpio jeje