2009-07-17 2 views
0

Ich erstellte einen Crystal Report mit Test einer DB. Ich führe den Bericht mit .NET ReportDocument-Klasse. Alles funktioniert gut, bis ich mich mit der Test-DB verbinde.Crystal Report - Ausführen von .NET

Wenn der gleiche Bericht auf UAT DB verweist (alle erforderlichen DB-Objekte sind auch in UAT verfügbar), erhalte ich einen Fehler. Um dies zu beheben, muss ich den Servernamen in der RPT-Datei manuell in UAT DB ändern.

Wie behebt man das?

Antwort

1

Eine Lösung besteht darin, eine System-DSN (ODBC) für die Verbindung zu Ihrer Zieldatenbank zu erstellen. Sie können dann die ODBC auf die gewünschte Datenbank (lokal, Test, Bühne usw.) umstellen. Wenn Sie außerdem sicherstellen, dass auf allen Ihren Servern eine ODBC-Verbindung mit demselben Namen verfügbar ist, sollte es einfach sein, den Bericht aus der Entwicklungs-> Test-> Phase-> Produktion zu verschieben.

0

Mit push reports sollte Ihr Problem lösen. Sie können den Bericht so einrichten, dass er ein stark typisiertes ADO.NET-Dataset akzeptiert, und dieses Dataset zur Laufzeit bereitstellen.

+0

Nein, ich verwende kein ADO.NET DataSet. Der Bericht spricht mit DB-Objekten direkt. Ich muss nur die Verbindungsdetails zur Laufzeit senden. – Kaz

+0

AFAIK, können Sie nicht. Der Bericht behält seine eigenen Datenbankeinstellungen bei, die zur Entwurfszeit eingerichtet werden und zur Laufzeit nicht geändert werden können. –

0

Ist das nicht so, wie es funktionieren soll? Es muss wissen, an welche DB es sich anschließt?

Vielleicht vermisse ich etwas, aber es klingt, als ob du nur die Verbindung richtig machen musstest.

+1

Crystal Reports können in zwei grundlegenden Modi arbeiten: Drücken oder Ziehen. Die meisten Berichte, die ich gesehen habe, verwenden pull, wodurch die Verbindungsdaten in der Berichtsklasse gespeichert werden. Es ist schön, wenn der Bericht selbstständig sein muss, aber im Rahmen einer größeren Anwendung ist es ein PITA, da die Berichtsdatenquelle manuell geändert werden muss, wenn der Code auf einen anderen Server verschoben wird (z. B. dev -> test -> Produktion). Durch Push-Berichte kann der Bericht Daten von einer externen Quelle annehmen, die ein ADO.NET-Dataset enthalten kann, das die Details der Verbindung zentralisiert. –