Foros del Web » Programación para mayores de 30 ;) » .NET »

Reporte con dos dataset

Estas en el tema de Reporte con dos dataset en el foro de .NET en Foros del Web. Hola el asunto es que tengo un reporte(cristal) un dataset(creado manualmente) y una form donde lo llamo y le asigno el datasource, todo funciona bien. ...
  #1 (permalink)  
Antiguo 15/04/2011, 20:01
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Reporte con dos dataset

Hola el asunto es que tengo un reporte(cristal) un dataset(creado manualmente) y una form donde lo llamo y le asigno el datasource, todo funciona bien.

Necesito ahora mostrar mas datos en mi reporte y no puedo hacerlo con una sola consulta, así que le agrege dos tablas a mi dataset, pero al momento de generar el reporte solo aparecen los datos de la primera tabla.

Así lo hago ahora:
Private Sub ReporteOrdenTemplado_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Try

mSqlServerExpress.Conectar()

Dim frmOrdenThermopanel As frmOrdenThermopanel = frmOrdenThermopanel.Instance

Dim CodigoOrdenThermopanel As Integer = frmOrdenThermopanel.Codigo

Dim strsqlconsulta As String = "SELECT OrdTrabajoThermopanel.Venta, Vendedores.Nombre as Vendedor, ItemOrdTrabajoThermopanel.Cantidad, Logo.Logo FROM OrdTrabajoThermopanel LEFT JOIN Vendedores ON Vendedores.Codigo = OrdTrabajoThermopanel.CodigoVendedor LEFT JOIN ItemOrdTrabajoThermopanel ON ItemOrdTrabajoThermopanel.CodOrdTrabajoThermopanel = OrdTrabajoThermopanel.Codigo LEFT JOIN Logo ON Logo.Codigo = 1 WHERE OrdTrabajoThermopanel.Codigo = " & CodigoOrdenThermopanel & "; SELECT ItemResumenThermopanel.Cristal, ItemResumenThermopanel.TotalCantidad FROM ItemResumenThermopanel WHERE ItemResumenThermopanel.CodOrdTrabajoThermopanel = " & CodigoOrdenThermopanel & ""

Dim da As New SqlDataAdapter(strsqlconsulta, conexionSqlEx)
Dim ds As DataSet = New DataSet()

da.Fill(ds)
ds.Tables(0).TableName = "OrdenThermopanel"
ds.Tables(1).TableName = "ResumenThermopanel"


Dim CrReport As New CrystalDecisions.CrystalReports.Engine.ReportDocum ent

' Asigno el reporte
CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocum ent()
CrReport.Load(Application.StartupPath & "\OrdenThermopanel.rpt")
CrReport.SetDataSource(ds)

CrystalReportViewer1.ReportSource = CrReport

mSqlServerExpress.Desconectar()

Catch ex As Exception
MessageBox.Show("Error generando el reporte: " & ex.Message, "Mostrando Reporte")
End Try

End Sub[/CODE]

Gracias por cualquier sugerencia.
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.

Última edición por Highlander; 15/04/2011 a las 20:57
  #2 (permalink)  
Antiguo 15/04/2011, 21:08
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Reporte con dos dataset

Echale un ojo al siguiente enlace:

http://www.elguille.info/colabora/pu...ortDataset.htm

O bien lo que también puedes hacer es una vista entre ambas tablas.

Saludos!
__________________
http://ka0stj.wordpress.com/
  #3 (permalink)  
Antiguo 15/04/2011, 22:27
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Reporte con dos dataset

Cita:
Iniciado por Ka0stj Ver Mensaje
Echale un ojo al siguiente enlace:

http://www.elguille.info/colabora/pu...ortDataset.htm

O bien lo que también puedes hacer es una vista entre ambas tablas.

Saludos!
GRacias con ese link ya logre llenar los dos dataset, pero surgio otro problema al momento de generar el reporte.

Cuando agrego cualquier campo del dataset2 al reporte por alguna razon me duplica datos del dataset 1 del area (DETAILS), si remuevo los datos del dataset2 se va el problema.


Asi quedo el codigo.
Código:
 Private Sub ReporteOrdenTemplado_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim frmOrdenThermopanel As frmOrdenThermopanel = frmOrdenThermopanel.Instance
        Dim CodigoOrdenThermopanel As Integer = frmOrdenThermopanel.Codigo

        Dim sqlDaProd As SqlDataAdapter
        Dim sqlDaCate As SqlDataAdapter
        Dim dsPc As New ReporteThermopanel

        Dim StrCommCate As String = "SELECT OrdTrabajoThermopanel.Venta, OrdTrabajoThermopanel.Obra, OrdTrabajoThermopanel.Poli, OrdTrabajoThermopanel.Silicona, OrdTrabajoThermopanel.Cliente, OrdTrabajoThermopanel.Rut, OrdTrabajoThermopanel.Direccion, OrdTrabajoThermopanel.Fono, OrdTrabajoThermopanel.Factura, OrdTrabajoThermopanel.OC, OrdTrabajoThermopanel.ObraN, OrdTrabajoThermopanel.Observaciones, OrdTrabajoThermopanel.FechaIngreso, OrdTrabajoThermopanel.Serial, OrdTrabajoThermopanel.Supervisor, OrdTrabajoThermopanel.TotalCantidad as TotalCantidadOrden, OrdTrabajoThermopanel.TotalM2, Vendedores.Nombre as Vendedor, ItemOrdTrabajoThermopanel.Cantidad, ItemOrdTrabajoThermopanel.Cristal1, ItemOrdTrabajoThermopanel.Cristal2, ItemOrdTrabajoThermopanel.Separador, ItemOrdTrabajoThermopanel.Ancho, ItemOrdTrabajoThermopanel.Alto, ItemOrdTrabajoThermopanel.Tipo, Logo.Logo FROM OrdTrabajoThermopanel LEFT JOIN Vendedores ON Vendedores.Codigo = OrdTrabajoThermopanel.CodigoVendedor LEFT JOIN ItemOrdTrabajoThermopanel ON ItemOrdTrabajoThermopanel.CodOrdTrabajoThermopanel = OrdTrabajoThermopanel.Codigo LEFT JOIN Logo ON Logo.Codigo = 1  WHERE OrdTrabajoThermopanel.Codigo = " & CodigoOrdenThermopanel
        Dim strCommProd As String = "SELECT ItemResumenThermopanel.Cristal, ItemResumenThermopanel.TotalCantidad FROM ItemResumenThermopanel WHERE ItemResumenThermopanel.CodOrdTrabajoThermopanel = " & CodigoOrdenThermopanel & ""

        Try

            mSqlServerExpress.Conectar()

            'Crear los DataAdapters
            sqlDaCate = New SqlDataAdapter(StrCommCate, conexionSqlEx)
            sqlDaProd = New SqlDataAdapter(strCommProd, conexionSqlEx)

            'Poblar las tablas del dataset desde los dataAdaperts
            sqlDaCate.Fill(dsPc, "OrdenThermopanel")
            sqlDaProd.Fill(dsPc, "ResumenThermopanel")

            'Poblar el informe con el dataSet y mostrarlo
            Dim info As New OrdenThermopanel
            info.SetDataSource(dsPc)
            CrystalReportViewer1.ReportSource = info


            mSqlServerExpress.Desconectar()

        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try

    End Sub
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.
  #4 (permalink)  
Antiguo 16/04/2011, 10:41
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Reporte con dos dataset

Asegurate de que la relación que existe entra ambas tablas no te arroje esos datos duplicados, es decir, puede ser que un registro de tu tabla2 exista 2 veces en tu tabla1.

Realiza la consulta desde sql server para descartar esta situación.

Saludos!
__________________
http://ka0stj.wordpress.com/

Etiquetas: dataset, reporte
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:39.