Laden...

ReportViewer Report durch Button-Click aktualisieren, funktioniert nur nach Neustart

Erstellt von MEG vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.284 Views
M
MEG Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren
ReportViewer Report durch Button-Click aktualisieren, funktioniert nur nach Neustart

Hallo,

ich möchte in einer WPF-Anwendung Daten einer MS-Access Datenbank als Bericht darstellen.
Die Darstellung funktioniert auch soweit, nur schaffe ich es nicht den Report z.B. durch betätigen eines Buttons zu aktualisieren.
Wenn ich Daten der Datenbank ändere oder neue hinzufüge, zeigt der ReportViewer immer noch dieselben Daten wie zu Beginn. Erst wenn man das Programm neu startet werden die Änderungen im ReportViewer ersichtlich.

Kann mir da vielleicht jemand weiterhelfen?

Das ganze habe ich nach folgendem Muster gemacht:
Exemplarische Vorgehensweise: Verwenden von ReportViewer in einer WPF-Anwendung


<Window x:Class="WpfReportApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:rv="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms" 
        Title="MainWindow" Height="350" Width="525">
    <Grid>
      <WindowsFormsHost>
        <rv:ReportViewer x:Name="_reportViewer"/>
      </WindowsFormsHost>
    </Grid>
</Window>


public MainWindow()
{
    InitializeComponent();
    _reportViewer.Load += ReportViewer_Load;
}

private bool _isReportViewerLoaded;

private void ReportViewer_Load(object sender, EventArgs e)
{
    if (!_isReportViewerLoaded)
    {
        Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = new Microsoft.Reporting.WinForms.ReportDataSource();
        AdventureWorks2008R2DataSet dataset = new AdventureWorks2008R2DataSet();

        dataset.BeginInit();

        reportDataSource1.Name = "DataSet1"; //Name of the report dataset in our .RDLC file
        reportDataSource1.Value = dataset.SalesOrderDetail;
        this._reportViewer.LocalReport.DataSources.Add(reportDataSource1);
        this._reportViewer.LocalReport.ReportEmbeddedResource = "<VSProjectName>.Report1.rdlc";

        dataset.EndInit();

        //fill data into adventureWorksDataSet
        AdventureWorks2008R2DataSetTableAdapters.SalesOrderDetailTableAdapter salesOrderDetailTableAdapter = new AdventureWorks2008R2DataSetTableAdapters.SalesOrderDetailTableAdapter();
        salesOrderDetailTableAdapter.ClearBeforeFill = true;
        salesOrderDetailTableAdapter.Fill(dataset.SalesOrderDetail);

        _reportViewer.RefreshReport();

        _isReportViewerLoaded = true;
    }
}

T
314 Beiträge seit 2013
vor 6 Jahren

Wann und wie aktualisiert du den Bericht denn?

M
MEG Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren

Ich habe es schon geschafft, aber trotzdem vielen Dank.


                connection.Open();
                OleDbDataAdapter rDA = new OleDbDataAdapter("SELECT * FROM [Tabelle1]", connection);
                DataTable rDT = new DataTable();
                rDA.Fill(rDT);
                connection.Close();
                this._reportViewer.Reset();
                this._reportViewer.LocalReport.DataSources.Clear();
                this._reportViewer.LocalReport.ReportPath = @"..\Report1.rdlc"; //Pfad des Reports
                Microsoft.Reporting.WinForms.ReportDataSource rDS = new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", rDT);
                this._reportViewer.LocalReport.DataSources.Add(rDS);
                this._reportViewer.RefreshReport();