Laden...

Report Viewer (rdlc) ReportSource at Runtime ändern

Erstellt von ageier vor 17 Jahren Letzter Beitrag vor 17 Jahren 16.826 Views
A
ageier Themenstarter:in
15 Beiträge seit 2007
vor 17 Jahren
Report Viewer (rdlc) ReportSource at Runtime ändern

Hallo zusammen,

bin neu in C# und versuche, einen Report Viewer zu programmieren.
Nun wäre es fein, wenn der Report-Viewer zur Laufzeit einen von 2 definierten
Reports (rdlc) verwendet (die übrigens beide den gleichen DataSource verwenden).
Der Viewer soll somit nur sein "Aussehen" ändern.
Das Problem ist, mein Programm macht das aber nicht. Es zeigt immer nur den
ersten Report, obwohl beim Debuggen kein Fehler auftritt.

Weiß jemand Rat?

Vielen Dank schon mal im Voraus.

Hier mein Code:

:::

case "Kreuztabelle":
reportViewer1.LocalReport.ReportPath = Application.StartupPath + "\rmKreuz.rdlc";

break;

default:
break;
}

this.reportViewer1.RefreshReport();
}

S
1.047 Beiträge seit 2005
vor 17 Jahren

hab nicht viel zeit drum zeig ich dir mal wie ich das gemacht habe als code.
falls noch fragen sind antworte ich morgen dann.


private void LoadBudgetSollIstReport() {
	reportViewer1.Reset();
	ReportDataSource rptSource = new ReportDataSource();
	rptSource.Name = "Schlage_Budget_BudgetSollIstData";
	rptSource.Value = reportBindingSource1;

	reportViewer1.LocalReport.DataSources.Clear();
	reportViewer1.LocalReport.DataSources.Add(rptSource);
	reportViewer1.LocalReport.ReportEmbeddedResource = "Schlage.Budget.BudgetSollIst.rdlc";
	reportViewer1.LocalReport.SetParameters(new ReportParameter[] { m_parameterJahr });

	reportBindingSource1.DataSource = m_BudgetSollIstDataList;            
	reportViewer1.RefreshReport();
}
A
ageier Themenstarter:in
15 Beiträge seit 2007
vor 17 Jahren
Sieht schon besser aus

Vielen Dank,

ist schon besser:
eine Meldung kommt noch:

Fehler bei der lokalen Berichtsverarbeitung.
Die Berichtsdefinition des Berichts 'rmDetail.rdlc' wurde nicht gefunden

Ebenso beim Bericht für die Kreuztabelle ('rmKreuz.rdlc').

Wenn ich statt der eingebetteten Resource die Variante mit "Inhalt" auswähle und im Code den ReportPath angebe, erscheint die Meldung:

"Für die DatenDataSet_qmBerichtsdaten-Datenquelle wurde keine Datenquelleninstanz angegeben"

Hast du noch einen Tip?

Vielen Dank.

Schöne Grüße
Andreas

Zur Ergänzung noch der neue Code:

private void ChangeReport(String reportType, String reportName)
        {
            // Zuerst reseten
            reportViewer1.Reset();

            // Dann die Reportsource neu zuweisen
            ReportDataSource rptSource = new ReportDataSource();

            // Den Namen neu vergeben
            rptSource.Name = reportName;

            // die BindingSource neu zuweisen
            rptSource.Value = this.qmBerichtsdatenBindingSource;

            // Alle DataSources löschen
            reportViewer1.LocalReport.DataSources.Clear();

            // Report DataSource neu hinzufügen
            reportViewer1.LocalReport.DataSources.Add(rptSource);

            // Den Report zuweisen (entweder Embedded oder über ReportPath
            //reportViewer1.LocalReport.ReportEmbeddedResource = reportName;
            reportViewer1.LocalReport.ReportPath = Application.StartupPath + "\\" + reportName;

            // Evtl Parameter setzen
            //reportViewer1.LocalReport.SetParameters(new ReportParameter[] { m_parameterJahr });

            // Der BindingSource den DataSource neu zuweisen
            this.qmBerichtsdatenBindingSource.DataSource = this.datenDataSet;

            // und jetzt den Report neu refreshen
            reportViewer1.RefreshReport();

        }
S
1.047 Beiträge seit 2005
vor 17 Jahren

Fehler bei der lokalen Berichtsverarbeitung.
Die Berichtsdefinition des Berichts 'rmDetail.rdlc' wurde nicht gefunden

würd ich mal vermuten er hat die datei nicht gefunden... pfad überprüfen mit debugger...

"Für die DatenDataSet_qmBerichtsdaten-Datenquelle wurde keine Datenquelleninstanz angegeben"

dein Feher liegt hier

rptSource.Name = reportName;

in meinem code

rptSource.Name = "Schlage_Budget_BudgetSollIstData"

bezeichnet Schlage_Budget_BudgetSollIstData den namen der datenquelle die im bericht benutzt wird. (wenn ihc mich recht erinnere^^)

von daher müßte es bei dir so heißen

rptSource.Name = "DatenDataSet_qmBerichtsdaten"
A
ageier Themenstarter:in
15 Beiträge seit 2007
vor 17 Jahren
Super, vielen Dank

Echt toll, wie Sie hier geholfen werden.

Hat prima geklappt.

Danke schön.
🙂