Laden...

Report Rendern aus Konsolenanwendung Heraus

Erstellt von Alexandra vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.336 Views
Alexandra Themenstarter:in
102 Beiträge seit 2008
vor 15 Jahren
Report Rendern aus Konsolenanwendung Heraus

Hallo,
Ich möchte gerne dass aus meiner Konsolenanwendung heraus ein Report vom SQL ReportServer quasi aufgerufen udn gerendert wird, damit ich die Datei anschließend mit der Konsolenanwendung weiter verarbeiten kann. Bei Webanwendungen oder Windowsanwendungen kann man ja auch Reports einfügen.

Jetzt habe ich allerdings schon überall gesuch aber finde keine passende hilfe, wie das gehen soll. Überlegt welche Library ich nutzen muss etc.

Habt Ihr eine Ahnung ob das generell möglich ist einen Report durch eine Anwendung extern Rendern zulassen und wenn ja ob das mit einer Konsolenanwendung möglich ist ?

When you can live forever, what do you live for?...

T
708 Beiträge seit 2008
vor 15 Jahren

Ich verstehe gerade nicht was du genau möchtest...

Um an die Werte des SQL-Reports zu kommen musst du ja nur das SQL-Statement herauskopieren und in der Konsolenanwendung ausführen.

Um das Teil zu starten, übergibt man das dem IExplorer oder von mir aus auch einer eigenen Form mit einem WebBrowser Steuerelement den Pfad.

Aber sich im Prinzip das Teil Virtuell ausgeben zu lassen und es dann weiter bearbeiten...
das halte ich nicht unbedingt für möglich.

Evtl. bestünde aber die Möglichkeit den Report als XML zwischen zu speichern und so zu verändern. Man kann ja bei einem Report sagen "Speichern als XML-Datei mit Berichtsdaten".
Wenn du Glück hast, kommst du über eine Schnittstelle an die Methode die genau diese Funktion erfüllt.

Gruß,
TriB

Alexandra Themenstarter:in
102 Beiträge seit 2008
vor 15 Jahren

Hallo, danke erstmal für die schnelle Antwort 🙂

also der Sinn der ganzen Sache soll sein: den report als .XLS Datei zu erstellen und dann per E-mail zu verschicken.

mein problem ist halt dass ich nciht weiß, wie ich aus der Anwendung heraus dem Report quasi Parameter übergebe und ihn zum Rendern bringen kann.

When you can live forever, what do you live for?...

T
708 Beiträge seit 2008
vor 15 Jahren

Ich habe gestern mal ein wenig gegooglet und ein Beispiel für genau dein Problem in VBA & mit Crystal Reports gesehen...

Das müsste also schon funktionieren einen Report über irgendeine Schnittstelle auszuführen und abzuspeichern. Und genau die gilt es jetzt zu finden.

Mit etwas Glück ist die im .NET 3.5 Framework dabei (Das besteht ja fast nur aus SQL-Geschichten) oder man muss auf etwas vorgefertigtes zurückgreifen.

Ich halte meine Augen mal offen, das würde mich auch mal interessieren!

Alexandra Themenstarter:in
102 Beiträge seit 2008
vor 15 Jahren

Hallo, danke nochmal für die Hilfe, nach viel suchen und testen, bin ich auch shcon zu einem Ergebnis gekommen.


using Microsoft.Reporting.WebForms;
            ReportViewer rv = new ReportViewer();
            rv.ServerReport.ReportPath = "XXX/XXX/XXX";
            rv.ServerReport.ReportServerUrl = new Uri("http://xxx.xxx/xxx");
            
                 // XLS erstellen
                                
                Warning[] warnings;
                string[] streamids;
                string mimeType;
                string encoding;
                string extension;
                string deviceInfo = "<DeviceInfo>" + "<SimplePageHeaders>True</SimplePageHeaders>" + "</DeviceInfo>";
                byte[] bytes = rv.ServerReport.Render("Excel", deviceInfo, out mimeType, out encoding, out extension, out streamids, out warnings);
                
                using (FileStream fs = new FileStream(@"C:\Test\Dateiname.xls", FileMode.Create))
                {
                    fs.Write(bytes, 0, bytes.Length);
                    fs.Close();
                }

Das geht übrigens auch in einer Konsolenanwendung ^^ das war ja der "hauptpunkt"

When you can live forever, what do you live for?...

T
708 Beiträge seit 2008
vor 15 Jahren

Hey super, das sieht ja gut aus!

Ich habe aber noch eine Alternative gefunden, ob sie dir hilft weiß ich nicht, aber sie ist zumindest sehr sehr einfach.

Wenn du auf dem ReportServer bist, kannst du sog. Abonnements abschließen.
Dort gibst du einen Zielpfad und ein Zeitfenster an und der Report speichert sich wie von Geisterhand selbst, im richtigen Format 🙂

Alexandra Themenstarter:in
102 Beiträge seit 2008
vor 15 Jahren

ja, dass kannte ich bereits, dass war die bisherige version ^^ allerdings wurde der bericht anhand bestimmter parametern erstellt und diese parameter können sich aber hin und wieder mal ändern. Dann musste man jedes mal auf dem reportserver das abonnement ändern, das war zu lästig^^ also musste was anderes her^^ jetzt werden die parameter durch eine SQL abfrage geholt und sind immer aktuell ohne dass man was ändern muss 😉

When you can live forever, what do you live for?...

L
770 Beiträge seit 2006
vor 15 Jahren

Hallo,

jeder ReportServer hat doch ne 2te URL, bei welcher das ganze grafische drum herum wegfällt.

Bei diesem könntest du dir dein Report raussuchen, die URL notieren und nachher per Webrequest abfragen. Auch die Angabe der Parameter ist darüber möglich.

Hoffe du weißt was ich mein, es fällt mir aktuell nicht ein, welcher Zweig das von den Reporting Services ist 😁

lg Lion

lg Lion

Alexandra Themenstarter:in
102 Beiträge seit 2008
vor 15 Jahren

ich weiß es nicht genau^^ aber dass probelm ist ja eh mittlerweile gelöst wurden^^

When you can live forever, what do you live for?...