none
Como llenar un reporte con data set RRS feed

Todas las respuestas

  • Hola Yoel:

    Te pongo un ejemplo de acceso a un informe.rpt con vb.2010. El informe se visualiza en un form que contiene únicamente el CrViewer, el cual nos servirá para todos los informes. También te he añadido como llamar a un parámetro en caso de que lo necesites.

    Partimos de la base de que ya tienes el dataset creado.

    Por último adáptalo con tus nombres y ya está. El informe lo llamo desde un button y le indico el método Sub Imprimir().

    Public Sub Imprimir() Dim dsInformes As New DataSet("dsInformes") Try Using Cnn As New OleDbConnection(strConexion) Cnn.Open() 'Creamos el dataAdapter y la sql de selección Dim cmd As New OleDbCommand("SELECT Grupo, Descripcion, Ejer_01, Ejer_02, Ejer_03, Ejer_04, Ejer_05 " & _ "FROM Varios WHERE Cod_Empresa = @empresa AND Balance = 'FLUCAJA' ORDER BY Orden", Cnn) cmd.Parameters.AddWithValue("@empresa", m_strCod_Empresa) Dim daInformes As New OleDbDataAdapter(cmd)'Declaramos y asignamos el objeto CrReports Dim CrReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocument() 'Poblar las tablas del dataset desde los dataAdaperts daInformes.Fill(dsInformes, "Informe") 'Declaramos y asignamos el objeto CrReports Dim CrReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocument() ''// Asigno el nombre del reporte CrReport.Load(Application.StartupPath & "\Informes\Informes_A4\InfValoresGeneral_5ej_A4.rpt") 'Asignamos el data adapter al objeto crReport CrReport.SetDataSource(dsInformes) 'Asignamos el parámetro de si contiene grupo CrReport.SetParameterValue("parGrupo", False) '//Llamamos al visor de informes y vemos el informe Dim VisorInforme As frmCrViewer = New frmCrViewer VisorInforme.crViewer1.ReportSource = CrReport VisorInforme.Text = "Informe del Flujo de Caja" VisorInforme.ShowDialog() 'Destruimos todo el informe CrReport.Dispose() VisorInforme.Dispose() dsInformes.Dispose() Catch ex As Exception MessageBox.Show("Error: " & ex.Message, "Informe Flujo de Caja.") End Try End Sub

    Por último te comento que es importante que te abras una carpeta "Informes" en donde reside el exe, es decir en BIN > Debug > Informes y ahí metes los rpt, eso te ahorrará muchos problemas.

    Un cordial saludo.

    Gemma

    miércoles, 10 de julio de 2013 13:04
  • Pero yo estoy utilizando Entity Framework, y en mi reporte utilizo dos procedimientos almacenados,

    entonces realizo mis dos consultas con linq pasandoles el resultados de mis dos procedimientos ejemplo: 

    Dim consulta1 = EntityToDataTable(contexto.sp_Procedimiento1(filtro1,filtro2))
    Dim consulta2=EntityToDataTable(contexto.sp_Procedimiento2(filtro1,filtro2))
    
    Dim datos as New DataSet 
    
    datos.Tables.Add(consulta1)
    datos.Tables.Add(consulta2)
    
    
    
    
    Entonces despues a mi reporte cono .DataSource le paso mi  dataSet creado antes pero no funciona
    viernes, 12 de julio de 2013 0:17