none
Error en la propiedad ReadOnly

    Pregunta

  • Hola, tengo que imprimir un reporte en Crystal Report el cual lleno con los datos de un dataset, pero me marca el siguiente error 

    "La propiedad 'ReportSource' es 'ReadOnly'"

    Aca me marca el error:

     CierreXUsuario.ReportSource = info

    Este es todo el código que utilizo para llamarlo:

     Dim sqlConn As SqlConnection
            Dim sqlDaProd As SqlDataAdapter
            Dim sqlDaCate As SqlDataAdapter
            Dim dsPc As New DataSet2
            Dim strConn As String = strCadenaConexion
            Dim StrCommCate As String = "Select * From CierreCaja order by Usuario"
    
    
            Try
                'Crear los DataAdapters
                sqlConn = New SqlConnection(strConn)
                sqlDaCate = New SqlDataAdapter(StrCommCate, sqlConn)
                sqlDaProd = New SqlDataAdapter(strCommProd, sqlConn)
    
                'Poblar las tablas del dataset desde los dataAdaperts
                sqlDaCate.Fill(dsPc, "CierreCaja")
    
                'Poblar el informe con el dataSet y mostrarlo
                Dim info As New CierreXUsuario
                info.SetDataSource(dsPc)
                CierreXUsuario.ReportSource = info
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            End Try

    Me parece que solo cambiado una propiedad se tendría que solucionar pero no se como.

    Saludos...

    jueves, 16 de febrero de 2017 17:57

Respuestas

  • Hola Federico32113,

    Tendrías que omitir la siguiente línea :

    CierreXUsuario.ReportSource = info

    Además, no deberías acceder al formulario de esa manera, tienes que crear una instancia de ello.

    Private Sub btnAbrirReporte_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
        Dim info As New CierreXUsuario
        info.SetDataSource(dsPc)
    
        Dim frm As New FrmReport
        frm.CrystalReportViewer1.ReportSource = info
        frm.CrystalReportViewer1.RefreshReport()
        frm.Show()
    
    End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Federico32113 viernes, 17 de febrero de 2017 3:50
    jueves, 16 de febrero de 2017 18:28
  • Implemente los cambio y me quedo así:

     Private Sub XUsuarioToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles XUsuarioToolStripMenuItem1.Click
            Dim sqlConn As SqlConnection
            Dim sqlDaProd As SqlDataAdapter
            Dim sqlDaCate As SqlDataAdapter
            Dim dsPc As New DataSet2
            Dim strConn As String = strCadenaConexion
            Dim StrCommCate As String = "Select * From CierreCaja order by Usuario"
    
            Try
                'Crear los DataAdapters
                sqlConn = New SqlConnection(strConn)
                sqlDaCate = New SqlDataAdapter(StrCommCate, sqlConn)
                sqlDaProd = New SqlDataAdapter(strCommProd, sqlConn)
    
                'Poblar las tablas del dataset desde los dataAdaperts
                sqlDaCate.Fill(dsPc, "CierreCaja")
    
                'Poblar el informe con el dataSet y mostrarlo
                Dim info As New CierreXUsuario
                info.SetDataSource(dsPc)
    
                Dim frm As New FrmReport
                frm.CrystalReportViewer1.ReportSource = info
                frm.CrystalReportViewer1.RefreshReport()
                frm.Show()
    
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            End Try
    
        End Sub

    Mira agregue esta linea antes del .show y parece funcionar bien.

       FrmReport.Reporte = info


    • Editado Federico32113 jueves, 16 de febrero de 2017 19:05
    • Marcado como respuesta Federico32113 viernes, 17 de febrero de 2017 3:50
    jueves, 16 de febrero de 2017 18:50

Todas las respuestas

  • Hola Federico32113,

    La clase CierreXUsuario es el reporte (el archivo .rpt) ? ¿Cuál es tu visualizador de reporte ?

    Tienes que enlazar el documento del reporte al 'ReportSource' del CrystalReportViewer.

    Dim info As New CierreXUsuario
    info.SetDataSource(dsPc)
    crystalReportViewer1.ReportSource = info
    crystalReportViewer1.RefreshReport()

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    jueves, 16 de febrero de 2017 18:08
  • Si CierreXUsuario es .rpt.

    Así me quedo pero sigue marcando el error. 

      Dim info As New CierreXUsuario
                info.SetDataSource(dsPc)
                CierreXUsuario.ReportSource = info
                FrmReport.CrystalReportViewer1.ReportSource = info
                FrmReport.CrystalReportViewer1.RefreshReport()
    Al reporte lo llamo haciendo clic en un menú MDI.



    jueves, 16 de febrero de 2017 18:19
  • Hola Federico32113,

    Tendrías que omitir la siguiente línea :

    CierreXUsuario.ReportSource = info

    Además, no deberías acceder al formulario de esa manera, tienes que crear una instancia de ello.

    Private Sub btnAbrirReporte_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
        Dim info As New CierreXUsuario
        info.SetDataSource(dsPc)
    
        Dim frm As New FrmReport
        frm.CrystalReportViewer1.ReportSource = info
        frm.CrystalReportViewer1.RefreshReport()
        frm.Show()
    
    End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Federico32113 viernes, 17 de febrero de 2017 3:50
    jueves, 16 de febrero de 2017 18:28
  • Implemente los cambio y me quedo así:

     Private Sub XUsuarioToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles XUsuarioToolStripMenuItem1.Click
            Dim sqlConn As SqlConnection
            Dim sqlDaProd As SqlDataAdapter
            Dim sqlDaCate As SqlDataAdapter
            Dim dsPc As New DataSet2
            Dim strConn As String = strCadenaConexion
            Dim StrCommCate As String = "Select * From CierreCaja order by Usuario"
    
            Try
                'Crear los DataAdapters
                sqlConn = New SqlConnection(strConn)
                sqlDaCate = New SqlDataAdapter(StrCommCate, sqlConn)
                sqlDaProd = New SqlDataAdapter(strCommProd, sqlConn)
    
                'Poblar las tablas del dataset desde los dataAdaperts
                sqlDaCate.Fill(dsPc, "CierreCaja")
    
                'Poblar el informe con el dataSet y mostrarlo
                Dim info As New CierreXUsuario
                info.SetDataSource(dsPc)
    
                Dim frm As New FrmReport
                frm.CrystalReportViewer1.ReportSource = info
                frm.CrystalReportViewer1.RefreshReport()
                frm.Show()
    
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            End Try
    
        End Sub

    Mira agregue esta linea antes del .show y parece funcionar bien.

       FrmReport.Reporte = info


    • Editado Federico32113 jueves, 16 de febrero de 2017 19:05
    • Marcado como respuesta Federico32113 viernes, 17 de febrero de 2017 3:50
    jueves, 16 de febrero de 2017 18:50