none
Reportviewer No actualiza cambios hechos en DB. RRS feed

  • Pregunta

  • Buen día a todos. La consulta es básicamente saber porque no se actualizan los datos cada vez que corro un informe .rdlc.

    A ver, el informe es bien básico y solo deseo que muestre algunos datos mínimos, de hecho esto lo hace bien, pero cuando cargo o elimino un nuevo registro en las tablas de la DB y vuelvo a ver el informe, estas modificaciones no aparecen.

    Sí aparecen si salgo de la aplicación y vuelvo a ingresar, pero lógicamente no es lo correcto. He probado todo cuanto he leído en Internet, pero aun no hallo la forma. Trabajo con Base SQL Express 2008 r2, VS 2008 (V Basic) Adjunto Fragmento de código.

    De ante mano, muchas gracias!!!

    Me.Location = Screen.PrimaryScreen.WorkingArea.Location
            Me.Size = Screen.PrimaryScreen.WorkingArea.Size
            If Eleccion = 100 Then
                Me.VistaIngresoProdAdquiTableAdapter.Fill(Me.DataSetDeInformes.VistaIngresoProdAdqui)
                Me.Rpt_IngProdFabri.Visible = False
                Me.Rpt_IngMatPrima.Visible = False
                Me.Rpt_NoConformesAdqui.Visible = False
                Me.Rpt_NoConformesFabri.Visible = False
                Me.Rpt_NoConformesMPrima.Visible = False
                Me.Rpt_EnsayosProdAdqui.Visible = False
                Me.Rpt_EnsayosProdFabri.Visible = False
                Me.Rpt_EnsayosMatPrima.Visible = False
                Me.Rpt_HerramDeControl.Visible = False
                Me.Rpt_IngProdAdqui.Visible = True
                Me.Rpt_IngProdAdqui.Dock = DockStyle.Fill
                Me.Rpt_IngProdAdqui.RefreshReport()
    End If

    Formulario

    viernes, 25 de marzo de 2016 14:45

Respuestas

  • Muchas gracias por tu pronta respuesta José Luis. De todos modos gracias a Dios, pude darle solución, código mediante. Anteriormente lo había hecho así, pero me daba también un error y no encontraba la solución. Hoy pude ver donde tenia la pequeña falla y bueno, dejo el código para aquel que quizás le pueda servir. Te reitero el agradecimiento El Yerro en el código lo tenia en el

    ReportDataSource.Name =

    "DataSetDeInformes_VistaIngresoProdFabri"

    Yo ponía = "DataSet1". Corregido esto, ahora funciona perfecto.

    Private Sub frmInformes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.Location = Screen.PrimaryScreen.WorkingArea.Location
            Me.Size = Screen.PrimaryScreen.WorkingArea.Size
            If Eleccion = 100 Then
                Me.Rpt_IngProdFabri.Visible = False
                Me.Rpt_IngMatPrima.Visible = False
                Me.Rpt_NoConformesAdqui.Visible = False
                Me.Rpt_NoConformesFabri.Visible = False
                Me.Rpt_NoConformesMPrima.Visible = False
                Me.Rpt_EnsayosProdAdqui.Visible = False
                Me.Rpt_EnsayosProdFabri.Visible = False
                Me.Rpt_EnsayosMatPrima.Visible = False
                Me.Rpt_HerramDeControl.Visible = False
                Me.Rpt_IngProdAdqui.Visible = True
                ConsultaSelect = "SELECT * FROM VistaIngresoProdAdqui ORDER By Pedido, Proveedor ASC"
                Conexion = New SqlConnection(Cs)
                Conexion.Open()
                Ds = New DataSet
                Ds.Clear()
                Da = New SqlDataAdapter(ConsultaSelect, Conexion)
                Da.Fill(Ds, "VistaIngresoProdAdqui")
                Conexion.Close()
                Me.Rpt_IngProdAdqui.Reset()
                Me.Rpt_IngProdAdqui.ProcessingMode = ProcessingMode.Local
                Me.Rpt_IngProdAdqui.LocalReport.ReportPath = IO.Path.Combine(Application.StartupPath, "C:\SistemaDeCalidad_2008\SistemaDeCalidad_2008\Informes\Rpt_IngProdAdqui.rdlc")
                Dim ReportDataSource As New ReportDataSource
                ReportDataSource.Name = "DataSetDeInformes_VistaIngresoProdAdqui"
                ReportDataSource.Value = Ds.Tables(0)
                Me.Rpt_IngProdAdqui.LocalReport.DataSources.Add(ReportDataSource)
                Me.Rpt_IngProdAdqui.Dock = DockStyle.Fill
                Me.Rpt_IngProdAdqui.RefreshReport()
                '===============================================
            ElseIf Eleccion = 101 Then

    viernes, 25 de marzo de 2016 21:37

Todas las respuestas

  • Hola:

     Para que los cambios surtan efecto en el report  tienes que hacer un refresh del datasource cada vez que desees enlazarlos.

     En estos artículos menciono como Diseñar un reporte y como enlazarlo a una fuente de datos dinámicos, así como algunos puntos a considerar.

    ReportViewer y Rdlc, ejemplo Factura (datos fijos)

     ReportViewer y Rdlc, ejemplo Factura (Base de datos)

     Espero te sean de utilidad.


    Saludos desde Monterrey, Nuevo León, México!!!

    viernes, 25 de marzo de 2016 17:27
  • Muchas gracias por tu pronta respuesta José Luis. De todos modos gracias a Dios, pude darle solución, código mediante. Anteriormente lo había hecho así, pero me daba también un error y no encontraba la solución. Hoy pude ver donde tenia la pequeña falla y bueno, dejo el código para aquel que quizás le pueda servir. Te reitero el agradecimiento El Yerro en el código lo tenia en el

    ReportDataSource.Name =

    "DataSetDeInformes_VistaIngresoProdFabri"

    Yo ponía = "DataSet1". Corregido esto, ahora funciona perfecto.

    Private Sub frmInformes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.Location = Screen.PrimaryScreen.WorkingArea.Location
            Me.Size = Screen.PrimaryScreen.WorkingArea.Size
            If Eleccion = 100 Then
                Me.Rpt_IngProdFabri.Visible = False
                Me.Rpt_IngMatPrima.Visible = False
                Me.Rpt_NoConformesAdqui.Visible = False
                Me.Rpt_NoConformesFabri.Visible = False
                Me.Rpt_NoConformesMPrima.Visible = False
                Me.Rpt_EnsayosProdAdqui.Visible = False
                Me.Rpt_EnsayosProdFabri.Visible = False
                Me.Rpt_EnsayosMatPrima.Visible = False
                Me.Rpt_HerramDeControl.Visible = False
                Me.Rpt_IngProdAdqui.Visible = True
                ConsultaSelect = "SELECT * FROM VistaIngresoProdAdqui ORDER By Pedido, Proveedor ASC"
                Conexion = New SqlConnection(Cs)
                Conexion.Open()
                Ds = New DataSet
                Ds.Clear()
                Da = New SqlDataAdapter(ConsultaSelect, Conexion)
                Da.Fill(Ds, "VistaIngresoProdAdqui")
                Conexion.Close()
                Me.Rpt_IngProdAdqui.Reset()
                Me.Rpt_IngProdAdqui.ProcessingMode = ProcessingMode.Local
                Me.Rpt_IngProdAdqui.LocalReport.ReportPath = IO.Path.Combine(Application.StartupPath, "C:\SistemaDeCalidad_2008\SistemaDeCalidad_2008\Informes\Rpt_IngProdAdqui.rdlc")
                Dim ReportDataSource As New ReportDataSource
                ReportDataSource.Name = "DataSetDeInformes_VistaIngresoProdAdqui"
                ReportDataSource.Value = Ds.Tables(0)
                Me.Rpt_IngProdAdqui.LocalReport.DataSources.Add(ReportDataSource)
                Me.Rpt_IngProdAdqui.Dock = DockStyle.Fill
                Me.Rpt_IngProdAdqui.RefreshReport()
                '===============================================
            ElseIf Eleccion = 101 Then

    viernes, 25 de marzo de 2016 21:37