none
problema al mostar informe de crystalreport RRS feed

  • Pregunta

  • Hola amigos, me e encontrado con el siguiente error al intentar mostrar un reporte en crystalreport:


    el codigo que e utilizado es el siguiente:

    Dim sqlDaCate As SqlDataAdapter

    Dim StrCommCate As String = "select * from Temp_ImprimirOrdenCompra"

            Try
                'Crear los DataAdapters
                sqlDaCate = New SqlDataAdapter(StrCommCate, cnxSQL)
                dat.Clear()

                'Poblar las tablas del dataset desde los dataAdaperts
                sqlDaCate.Fill(dat, "Temp_ImprimirOrdenCompra")

                Dim info As New OrdenDeCompra             'es el crystalreport
                Dim RPT As New frmOrdenCompra            'es el form con el crystalreportviewer

                'Poblar el informe con el dataSet y mostrarlo
                info.SetDataSource(dat)
                RPT.CrystalReportViewer1.ReportSource = info          '<<< esta es la linea donde me marca el error
                RPT.CrystalReportViewer1.Dock = DockStyle.Fill
                RPT.Show()
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            End Try

    tambien en App.config agrege lo siguiente:

    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>

    ya no se que hacer e buscado y probado varias cosas pero el error continua, en mi tabla no hay registros con valores nulos, y en tiempo de diseño se muestra el reporte de manera normal pero al ejecutar el programa y llamar al reporte me sale el error.

    espero me puedan ayudar, de antemano muchas gracias.

    viernes, 18 de enero de 2019 2:11

Respuestas

  • Hola:
    He creado una tabla en SQLServer y la he añadido los siguientes registros

    En este ejemplo (Prueba) que consta de los siguientes elementos


    Esta hecho con VS2008 y el Crystal Report es el que viene con el.
    El net framework es el 3.5

    El Form1 es el de inicio y tiene 1 Button con el siguiente codigo
    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient
    Public Class Form1
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                Dim lsCadConexion As String = "Data Source=.\SQLEXPRESS;Initial Catalog=TU_BASE_DE_DATOS;Integrated Security=True"
                Dim lsQuery As String = "SELECT * FROM ordencompra"
                Dim loDataTable As New DataTable
                Using loConexion As New SqlConnection(lsCadConexion)
                    Using loDataAdapter As New SqlDataAdapter(lsQuery, loConexion)
                        loDataAdapter.Fill(loDataTable)
                    End Using
                End Using
                Using lofrmCrystal As New frmOrdenCompra
                    lofrmCrystal.DataTable = loDataTable
                    lofrmCrystal.ShowDialog()
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            End Try
        End Sub
    End Class

    El frmOrdenCompra es el de la siguiente imagen

    El codigo es

    Option Strict On
    Option Explicit On
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Public Class frmOrdenCompra
        Private mDataTable As DataTable
        Public Property DataTable() As DataTable
            Get
                Return mDataTable
            End Get
            Set(ByVal value As DataTable)
                mDataTable = value
            End Set
        End Property

        Private Sub frmOrdenCompra_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Try
                Dim lsPathRPT As String = Application.StartupPath & "\OrdenDeCompra.rpt"
                Me.rdInforme.Load(lsPathRPT)
                Me.rdInforme.SetDataSource(mDataTable)
                Me.crvInforme.ReportSource = Me.rdInforme
                Me.WindowState = FormWindowState.Maximized
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "FrmCrystal_Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            Me.WindowState = FormWindowState.Maximized
            Me.Cursor = Cursors.Default
        End Sub
    End Class

    El resultado es

    Un saludo desde Bilbo
    Carlos

    • Marcado como respuesta Antonio Robles martes, 22 de enero de 2019 3:53
    domingo, 20 de enero de 2019 9:04

Todas las respuestas

  • Hola:
    El ejemplo consta de 2 Forms.
    En el primero haces la consulta a la base de datos y cargas 1 datatable, al hacer click en un boton, se le pasa el segundo Form el datatable.
    En el segundo Form, cargas los datos del datatable pasado desde el primer Form.

    En el primer Form

    Dim sqlDaCate As SqlDataAdapter
    Dim StrCommCate As String = "select * from Temp_ImprimirOrdenCompra"
    Try
        'Crear el DataAdapter
        sqlDaCate = New SqlDataAdapter(StrCommCate, cnxSQL)
        'Poblar el datatable desde el dataAdapter
        sqlDaCate.Fill(dat)
       
        'Este es el segundo Form que contiene 1 ReportDocument (rdInforme) y 1 CrystalReportViewer (crvInforme)
        Using lofrmCrystal As New FrmCrystal  
            lofrmCrystal.DataTable = dat
            lofrmCrystal.ShowDialog()
        End Using
    Catch ex As Exception
        MessageBox.Show(ex.ToString)
    End Try

    En el segundo Form

        Private mDataTable As DataTable
        Public Property DataTable() As DataTable
            Get
                Return mDataTable
            End Get
            Set(ByVal value As DataTable)
                mDataTable = value
            End Set
        End Property

        Private Sub FrmCrystal_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.rdInforme.Load(PATH_FICHERO_EXTENSION_RPT)
            Me.rdInforme.SetDataSource(mDataTable)
            Me.crvInforme.ReportSource = Me.rdInforme
            Me.WindowState = FormWindowState.Maximized
        End Sub

    Espero que se entienda

    Un saludo desde Bilbo

    Carlos


    viernes, 18 de enero de 2019 10:17
  • hola amigo Carlos, grcias por responder.

    tu codigo es muy claro, pero me aparece un error y no se de donde sale jajaja, te muestro aver si me puedes ayudar.

    te envio un saludo desde Tecate, México.

    viernes, 18 de enero de 2019 14:25
  • Hola:
    ¿Puedes poner el codigo, porque no veo nada con esa imagen?
    Pon tambien el "escenario" que tienes, los Forms que estan implicados en el proceso.
    Cuanto mas lo describas, mas facil es darte una respuesta correcta.

    Un saludo desde Bilbo
    Carlos

    sábado, 19 de enero de 2019 8:11
  • hola carlos disculpa por la poca informacion proporcionada, el codigo es utilise es el que me proporcionaste, el form donde esta el crystalreport y el reportdocument se llama: frmOrdenCompra, el crystalreport se llama: OrdenDeCompra.

    desde mi ventana(OrdenesCompra) es desde donde llamo el reporte(el segundo Form y demas).

    como una nota no se si ayude, en tiempo de diseño cuando agrego el crystalreportviewer al form y selecciono la opcion seleccionar informe de crystal report me aparece esto:

    estoy utilizando visual studio 2017, sql server 2012, en mi proyecto tengo el framework 4 seleccioando, sap crystalreports 13.0.24 y el runtime de 32 y 64 bits de la misma version.

    he buscado informacion pero todo me lleva a donde mismo.

    te agradesco tu tiempo.



    domingo, 20 de enero de 2019 4:06
  • Hola:
    He creado una tabla en SQLServer y la he añadido los siguientes registros

    En este ejemplo (Prueba) que consta de los siguientes elementos


    Esta hecho con VS2008 y el Crystal Report es el que viene con el.
    El net framework es el 3.5

    El Form1 es el de inicio y tiene 1 Button con el siguiente codigo
    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient
    Public Class Form1
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                Dim lsCadConexion As String = "Data Source=.\SQLEXPRESS;Initial Catalog=TU_BASE_DE_DATOS;Integrated Security=True"
                Dim lsQuery As String = "SELECT * FROM ordencompra"
                Dim loDataTable As New DataTable
                Using loConexion As New SqlConnection(lsCadConexion)
                    Using loDataAdapter As New SqlDataAdapter(lsQuery, loConexion)
                        loDataAdapter.Fill(loDataTable)
                    End Using
                End Using
                Using lofrmCrystal As New frmOrdenCompra
                    lofrmCrystal.DataTable = loDataTable
                    lofrmCrystal.ShowDialog()
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            End Try
        End Sub
    End Class

    El frmOrdenCompra es el de la siguiente imagen

    El codigo es

    Option Strict On
    Option Explicit On
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Public Class frmOrdenCompra
        Private mDataTable As DataTable
        Public Property DataTable() As DataTable
            Get
                Return mDataTable
            End Get
            Set(ByVal value As DataTable)
                mDataTable = value
            End Set
        End Property

        Private Sub frmOrdenCompra_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Try
                Dim lsPathRPT As String = Application.StartupPath & "\OrdenDeCompra.rpt"
                Me.rdInforme.Load(lsPathRPT)
                Me.rdInforme.SetDataSource(mDataTable)
                Me.crvInforme.ReportSource = Me.rdInforme
                Me.WindowState = FormWindowState.Maximized
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "FrmCrystal_Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            Me.WindowState = FormWindowState.Maximized
            Me.Cursor = Cursors.Default
        End Sub
    End Class

    El resultado es

    Un saludo desde Bilbo
    Carlos

    • Marcado como respuesta Antonio Robles martes, 22 de enero de 2019 3:53
    domingo, 20 de enero de 2019 9:04
  • hola amigo carlos gracias por tu ayuda y paciencia.

    solo cambie el framework a 3.5 y funciono tuve problemas con otras partes de mi codigo pero las soluciones es algo extraño que nunca me havia pasado espero no tener problemas en el futuro por tener ese framework seleccionado.

    de nuevo gracias y saludos.

    martes, 22 de enero de 2019 3:56
  • hola amigo Carlos, solo como comentario por si a alguien le puede ayudar.

    Al cambiar al framework 3.5 tuve demasiados problemas con mi código así que lo puse en 4.5 por lo cual tuve problemas al presentar los reportes, y la solución definitiva fue eliminar todas las referencias a crystalreports de mi proyecto, las cuales estaban guardadas en la carpeta Debug de mi proyecto.

    solo tuve que agregar las referencias nuevamente con la versión 21 de crystalreports y listo, ya funciona perfectamente.

    te mando un saludo de Tecate, México.

    miércoles, 30 de enero de 2019 14:58
  • Buenas, pudiste solucionarlo?


    Puru vida se les agradece Saludos Luis Ángel

    sábado, 2 de febrero de 2019 19:35
  • hola luis angel, disculpa la tardanza.

    en mi caso tube que eliminar todas las referencias en mi proyecto hacia crystalreports y tambien eliminar las librerias de crystalreports que se encontraban en la carpeta bin de mi proyecto y luego de eso agrege nuevamente las librerias con la version 21 de crystalreports.

    estube con ese problema cerca de 1 mes jajaja.

    espero te funcione igual, saludos.

    • Propuesto como respuesta LuisAngel1991 martes, 5 de marzo de 2019 5:09
    jueves, 21 de febrero de 2019 2:06