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();
}
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();
}
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();
}
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"
Echt toll, wie Sie hier geholfen werden.
Hat prima geklappt.
Danke schön.
🙂