Manchmal gibt es die Situation, in denen man einen Webreport zu einer anderen Datenquelle einrichten muss. Das kann notwendig sein, wenn der Bericht mit der Verwendung der Testdatenbank entwickelt wurde, oder eine Datenbank einfach an einen anderen Ort "verschoben" wurde. Oder vielleicht müssen Sie andersherum einen Bericht mit den Testdaten verbinden. Verschiedene Möglichkeiten sind zur neuen Konfiguration der Verbindungszeichenfolge sehr nützlich. In FastReport.Net geht das sehr einfach. Und ich werde Ihnen zeigen, wie man es macht.
Nehmen wir das Beispiel der ASP.Net Core-App. Ich möchte Sie daran erinnern, dass unsere Aufgabe darin besteht, vom Client-Teil zu der Verbindungszeile des Berichts zu übertragen. Es gibt zwei Möglichkeiten: übertragen Sie die Einstellung in den Bericht und im Berichtsskript, um die Verbindungszeile zu überschreiben, oder überschreiben Sie die Verbindungszeile direkt im Web-Controller der Anwendung. Der zweite Weg ist rationeller. Das werde ich Ihnen jetzt zeigen.
Der Controller wird das Indexierverfahren verwenden. Hier werden wir ein Bericht-Objekt erstellen und eine neue Verbindungszeichenfolge zuweisen. Daher wird das Verfahren einen Parameter entgegennehmen - die Verbindungszeichenfolge.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class HomeController : Controller { public IActionResult Index(string connstring) { WebReport webReport = new WebReport(); if (connstring is null) { webReport.Report.Load("reports/Empty.frx"); } else { webReport.Report.Load("reports/Master-Detail.frx"); webReport.Report.Dictionary.Connections[0].ConnectionString = connstring; } ViewBag.WebReport = webReport; return View(); } } |
Das Indexierverfahren nimmt den Parameter Constring, der beim Start zunächst gleich Null ist. Damit ein Web-Objekt bei der Anzeige der Seite nicht mit Fehlern übersät ist, müssen Sie es in die Berichtsvorlage laden. Da die Verbindungszeichenfolge noch nicht bekannt ist, lassen Sie es eine leere Vorlage. Wenn die Verbindungszeichenfolge gesetzt ist, laden wir die gewünschte Berichtsvorlage und definieren sie in der Verbindungszeichenfolge neu. Alles ist sehr einfach.
Wenn die Berichtsvorlage zunächst keine Verbindung zur Datenquelle hat, können Sie sie hinzufügen. Hier ist ein Beispiel für die Verbindung zu einer Datenbank MSSQL:
1 2 3 4 5 6 |
RegisteredObjects.AddConnection(typeof(MsSqlDataConnection)); MsSqlDataConnection sqlConnection = new MsSqlDataConnection(); sqlConnection.ConnectionString = connstring; sqlConnection.CreateAllTables(); webReport.Report.Dictionary.Connections.Add(sqlConnection); webReport.Report.Load("reports/CoreMSSQL.frx"); |
Das Indexierverfahren sollte eine entsprechende Ansicht haben. Fügen Sie den folgenden Code hinzu:
Hier haben wir ein Formular verwendet, das auf Das Indexierverfahren verweist. Es hat ein Textfeld mit dem Namen und der Schaltfläche "constring". Der Inhalt des Textfeldes wird als Parameter an das Verfahren übergeben.
Schauen wir uns jetzt an, was wir bekommen haben:
Zu Beginn war die Verbindungszeile nicht gesetzt, so dass die leere Berichtsvorlage hochgeladen wurde. Versuchen wir, die Verbindungszeile zur Xml-Datenbank einzugeben:
"XsdFile=;XmlFile=C:\\Users\\\Dimon\\source\\repos\\PassConnectionstring\\PassConnectionstring\\reports\\nwind.xml"
Nun erhalten wir den Bericht:
Auf diese Weise können Sie immer die Lösung zu einer Situation finden, in der der Bericht keine Verbindung zur Datenquelle herstellen kann, weil diese nicht zugänglich ist.