none
WPF implementación CRUD en 3 capas: crear informes RRS feed

  • Pregunta

  • Hola foro: estoy implementando un proyecto WPF en 3 capas con conexión CRUD he intento crear un informe para poder imprimirlo y exportarlo a excell, etc. hasta ahora tengo lo siguiente:

    en mi clase

     Public Shared Function ObtenerTodos() As List(Of DietaEntity)
            Dim lista As New List(Of DietaEntity)()
            Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("defaultEconomato").ToString())
                conn.Open()
                Dim query As String = " SELECT * FROM  dbo.DIETA
                                        WHERE        ( Baja = 1 )"

                Dim cmd As New SqlCommand(query, conn)
                cmd.CommandType = CommandType.Text

                Dim reader As SqlDataReader = cmd.ExecuteReader()

                Do While reader.Read()
                    Dim vldatos As New DietaEntity()
                    Dim fecha = CDate(reader("FechaFin"))
                    vldatos.Id = CInt(Math.Truncate(reader("Id")))
                    vldatos.str_ApellidosDeInterno = CStr(reader("str_Apellidos"))
                    vldatos.str_NombresDeInterno = CStr(reader("str_Nombres"))
                    vldatos.Diagnostico = CStr(reader("Diagnostico"))
                    vldatos.Dieta = CStr(reader("Dieta"))
                    vldatos.FechaInicio = CStr(reader("FechaInicio"))
                    vldatos.FechaFin = CStr(reader("FechaFin"))
                    vldatos.Estado = calcularFechaPasada(fecha)
                    vldatos.Baja = CStr(reader("Baja"))
                    lista.Add(vldatos)
                Loop
            End Using
            Return lista
        End Function

    en mi formulario   

     <Grid>
            <WindowsFormsHost>
                <RV:ReportViewer Name="mostrar"/>
            </WindowsFormsHost>
        </Grid>

    mi code behing

     Using conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("defaultEconomato").ToString())
                conn.Open()
                Dim sql As String = "SELECT * FROM DIETA "
                Dim da As SqlDataAdapter = New SqlDataAdapter(sql, conn)
                Dim ds As New DataSet
                da.Fill(ds)
    ' aqui es lo que me falta para unir los datos y mostrarlo
                Dim tabla As New DataTable
                mostrar.LocalReport.DataSources.Clear()
                mostrar.LocalReport.DataSources.Add()
                mostrar.LocalReport.ReportPath = "../../Report1.rdlc"
                mostrar.Refresh()

            End Using
    sábado, 13 de noviembre de 2021 15:11

Todas las respuestas

  • Buenas tardes, no es necesario utilizar un windowsformhost para utilizar los reportes, a menos que lo que desees es visualizarlo y nada mas, si quisieras imprimirlo directamente hay una clase para ello, en mi caso yo los uso y utilizando esa la clase me crea un documento en .pdf el cual puedo imprimir o guardar si es necesario
    jueves, 2 de diciembre de 2021 23:03
  • Por favor podrias darme un ejemplo

    por otra parte, he logrado esto pero no aparece el report, porque no encuentra la ruta (lo que eta subrayado), mas si cuando lo pongo completa la ruta, este es el codigo:

     Private Sub DisplayReport()
            Try
                Reporte.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", DietaDAL.ObtenerTodos()))
                Reporte.LocalReport.ReportPath = "E:\MAR-2022\PresentacionWPF-VB\Report1.rdlc"
                'Reporte.LocalReport.ReportPath = "..\Report1.rdlc"
                Reporte.RefreshReport()
            Catch ex As Exception
                Throw New Exception(ex.Message)
            End Try
        End Sub

    lunes, 7 de marzo de 2022 20:43
  • ya lo solucione, el codigo quedaria asi:

     Private Sub DisplayReport()
            Try
                Reporte.Clear()
                Reporte.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", DietaDAL.ImprimirTodos()))
                Reporte.LocalReport.ReportEmbeddedResource = "Reportes\Report1.rdlc"
                Reporte.LocalReport.ReportPath = "Reportes\Report1.rdlc"
                Reporte.Refresh()
                Reporte.RefreshReport()
            Catch ex As Exception
                Throw New Exception(ex.Message)
            End Try
        End Sub

    lunes, 7 de marzo de 2022 23:13