Abrufen des relativen Pfads zum Bericht "rdlc" in meiner Winform-App

8

Ich erstelle automatisch ein PDF aus einigen unserer Berichte in einem Monatsendprozess. Ich stoße auf ein Problem, bei dem ReportViewer.LocalReport meinen Bericht nicht finden kann. Innerhalb des Projekts befinden sich die Berichtsdateien in "(Projektstammordner) /Reports/report.rdlc".

Wie setze ich ReportViewer.LocalReport.ReportPath , damit ich meine Berichtsdatei referenzieren kann? Ich würde lieber nicht den vollständigen Pfad festlegen, da ich nicht weiß, wo es installiert werden würde, wenn es auf den Client-Computern installiert wird.

    
Mike Wills 23.04.2010, 21:28
quelle

4 Antworten

16

Verwenden Sie die Application.StartupPath-Eigenschaft, es zeigt immer auf das Verzeichnis, in dem sich Ihre EXE befindet:

%Vor%

Sie sollten sicherstellen, dass der Bericht auch in den Ordner bin \ Debug \ Reports kopiert wird, damit er in der IDE funktioniert. Verwenden Sie xcopy / s / d in einem Post-Build-Ereignis, um die Datei (en) zu kopieren.

    
Hans Passant 23.04.2010, 21:39
quelle
0

Der Pfad ist immer relativ zu Ihrem "aktuellen Verzeichnis", das in den meisten Fällen eine exe-Datei ist. Ändern Sie die rdlc-Dateien so, dass sie in den Zielordner kopiert werden anstatt in Ressourcen eingebettet zu werden (normalerweise geschieht dies). Der Pfad in Ihrem Projekt spielt keine Rolle.

    
kubal5003 23.04.2010 21:36
quelle
0

Sie können die Berichte in einer "resources" -Datei speichern und mithilfe eines Assembly-Readers der angegebenen .dll / .exe, in den die "resource" -Datei eingebettet ist, als Streaming-Referenz lesen. Setzen Sie Ihren Bericht dann auf den eingebetteten Stream, um die Berichtsdefinition zu erhalten.

Besonderer Hinweis. Wenn in Ihrem Bericht verschachtelte Unterberichte vorhanden sind, schlägt der Bericht fehl, es sei denn, Sie haben in Ihrer LocalReport-Unterberichtdefinition auch einen anderen Verweis auf Ihre Unterbericht-RDLC-Datei festgelegt.

    
DRapp 23.04.2010 21:37
quelle
0

Es gibt einen Bug von dem, was ich verstehe, dass es von Windows XP kommt. Das Problem tritt unter Windows 7 nicht auf.

Alle obigen Antworten stehen, aber ich habe eine Korrektur.

Dieses Problem tritt auf, wenn Sie ein SaveFileDialog verwenden, das den Pfad der aktuellen Anwendung ändert. Dies geschieht, wenn Sie den aktuellen Pfad relativ zum aktuellen Wokring-Verzeichnis verwenden, das der Standard für das Laden von RDLC ist, dh reportpath = "nameOfReport.rldc" . Wenn Sie den Bericht nach der Verwendung von SaveFileDialog aktualisieren möchten, kann der Berichtsviewer den Pfad zur Berichtsdatei nicht finden.

Die Lösung kommt von Hans Passant auf dem Post oben, aber ich würde von diesem ändern

%Vor%

zu diesem

%Vor%

Danke Hans

    
kuklei 28.10.2011 15:16
quelle