Laden...

Einige Frage zu Reports

Erstellt von Ishildur vor 17 Jahren Letzter Beitrag vor 17 Jahren 4.654 Views
I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren
Einige Frage zu Reports

Hallo zusammen
Mein Projekt neigt sich dem Ende zu und nun geht es eigentlich nur noch darum, die Reports zu erstellen, was ich allerdings in C# noch nie gemacht habe! Also als erstes ist mir aufgefallen, dass es in VS05 Prof. offenbar Reports sowie Crystal Reports gibt. Kennt da jemand die konkreten Unterschiede? Also was mir aufgefallen ist, ist, dass CrystalReports schön zwischen ReportHeader, PageHeader, Datenbereich, PageFooter und ReportFooter unterscheidet, was ich als sehr sinnvoll und nützlich erachte. Ein Report scheint da nicht zu unterschieden. Auf der Anderen Seite habe ich in CrystalReports noch keine Möglichkeit gefunden, Diagramme einzufügen, was wiederum im Report nicht möglich zu sein scheint, oder zumindest habe ich noch nicht herausgefunden, wie!

Kann mir jemand zusammenfassend die Unterschiede zwischen den beiden Varianten CrystalReport und Report nennen. Es gibt ja dann auch einen ReportViewer und einen CrystalReportViewer.

Kann mir auch jemand sagen, ob und wie ich grafische Diagramme in CrystalReports einfügen kann?

Mit der Datenbankanbindung habe ich auch so meine kleinen Schwierigkeiten:

Es ist erforderlich, dass ich ein BindingSource als Datenquelle der CrystalReporte bzw. Reporte definiere. Wie realisiere ich dies?

Auf rasche Antworten würde ich mich extrem freuen. Das Projekt muss bis am 23. August 12:00 Uhr beendet sein, darum habe ich nicht mehr die Zeit, stundenlang das Internet zu durchsuchen und wenn ich die Begriffe CrystalReport google kommt leider meisst nur Schrott...

Lg Ishildur

D
496 Beiträge seit 2005
vor 17 Jahren

falls du dich für crystal entscheiden solltest (meiner meinung nach besser)

such einfach mal im forum nach crystal reports

dann solltest du alles nötige finden

das wurde schon einige mal im detail erklärt

diagramme --> im crystal report in der menüleiste.. crystal report - einfügen - diagramm

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

3.728 Beiträge seit 2005
vor 17 Jahren
crystal

Ich finde Crystal Reports auch besser. Bei den Standard Visual Studio-Reports kann man z.B. keine Datenfelder in den Kopf- und Fußbereich ziehen.

I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren

Ich habe in meinem Programm alles Untypisierte DataSets. Wie kann ich nun in CrystelReports Datenbankfelder einfügen?

I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren

Hallo ich bins nochmal
Also ich muss diesen CrystalReport zur Laufzeit dynamisch erstellen können. Dies liegt daran, dass ich zur Entwicklungszeit noch gar nicht wissen kann, welche Tabelle und welche Spalten verwendet werden. Doch wie mache ich das? Sagt mir jetzt bitte nicht, dass dies nicht möglich ist!!! 8o

D
496 Beiträge seit 2005
vor 17 Jahren

ich glaube nicht das das möglich ist selbst wenn das müsstest du ja die ganze berichtsformatierung dynamisch zu laufzeit erstellen

hast du keine alternative?

wieviele mögliche verschieden tabellen willst du denn damit abdecken?

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren

So an die 30ig!
Das Problem ist, dass ich so an die 30ig DataGridViews habe, dessen Inhalt ich drucken möchte. Nun möchte ich aber nicht 30ig Reports erstellen müssen. Zudem können gewisse Spalten ausgeblendet werden, und in diesem Fall sollen diese auch nicht gedruckt werden. Dazu kommt das Problem, dass ich nur Untyped DataSets verwende...

3.728 Beiträge seit 2005
vor 17 Jahren
DataSet

Mit Crysal sollte das kein Problem sein. Du musst die Reports nicht direkt an die datenbank binden. Es geht auch mit einfachen C#-Klassen. Die Felder die der Bericht anzeigt, müssen allerdings zur Entwurfszeit feststehen. Eine Rechnung hat z.B. immer eine Adresse, eine Nummer, eine Summe usw..

Was für Berichte musst Du denn machen?

P.S. ich verwende IMMER untypisierte DataSets und hatte damit noch nie Probleme. Wo liegt Dein Problem damit?

I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren

Hallo Rainbird

Es gibt da ja:

  • Database Fields
  • Formula Fields
  • Parameter Fields
  • Group Name Fields
  • Running Total Fields
  • Special Fields
  • Unbound Fields

Das Problem ist nun, dass ich keine Database Fields einfügen kann, da der ja nur eine Datenbankverbindung oder typisierte DataSets als Datenquelle akzeptiert.

Muss ich einen anderen Feldtyp verwenden, und wenn ja welchen? Ich habe eine Vielzahl von untypisierten DataSets in meiner Applikation. Diese kann ich ja einfach zur Laufzeit mit Report.SetDataSource(DataSet Data) zuweisen, nur kann ich eben einfach den Report nicht designen, verstehst du, was ich meine?

Lg Ishildur

3.728 Beiträge seit 2005
vor 17 Jahren
Nur für die Struktur

Du musst dem Report mitteilen, welche Felder es gibt. Das geht am einfachsten mit Metadaten aus der Datenbank (also Datenbankverbindung). Zur Laufzeit übergibst Du dem Report ein Konstrukt, welches mindestens diese Felder enthält, als Datenquelle (Du bestimmt also, was der Report für Daten bekommt und nicht der Report selbst; Auch dann nicht, wenn Du zur Auswahl der Felder im Designer eine datenbankverbindung benutzt hast). Außerdem kannst Du noch Parameter übergeben.

Ein Report ist flach. Deshalb musst Du ihm die Daten in einer Tabellenstruktur übergeben. Wenn Du Daten hast, die sich nicht in einer Tabelle vereinen lassen, musst Du das mit Unter-Reports lösen.

Hier ist ein Tutorial:
http://www.c-sharpcorner.com/Code/2003/Sept/CrystalReportsIntroduction.asp

I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren

OK, aber die Datenbankverbindung wird auch nicht in der *.exe Datei gespeichert, hoffe ich doch ?!

3.728 Beiträge seit 2005
vor 17 Jahren
RPT-Datei

Crystal Reports werden als separate Dateien mit der Endung RPT abgelegt. Die komplette Definition eines Reports steckt in dieser Datei (Ähnlich wie bei einer Word-Vorlage). In Deiner EXE dürfen also keine Datenbankverbindung gespeichert sein. Üblicherweise liegen solche RPT-Dateien auf einem Netzlaufwerk, damit man Berichte auch mal geringfügig verändern kann, ohne die Client-Installation der Anwendung neu ausrollen zu müssen.

Ob man die Datenbankverbindung aus der RPT-Datei bekommt, kann ich Dir momentan noch nicht sagen. Ich verwende Crystal Reports mit einer Anwendung, deren Datenbankzugriffe komplett von einem Applikationsserver aus erfolgen. Selbst wenn jemand den ConnectionString hätte, würde er eine Security Exception bekommen, da nur das Konto des Applikationsservers zugriff auf die Datenbank hat. Bei einer Fat-Client-Anwendung, die direkt mit der DB redet, würde das allerdings anders aussehen. Da solltest Du ggf. etwas recherchieren.

I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren

Die komplette Definition eines Reports steckt in dieser Datei

Das habe ich mir schon gedacht. Um nochmal zu meiner ursprünglichen Frage zurückzukehren: Es gibt also keine Möglichkeit, einen solchen Report zur Laufzeit im Code zu erstellen? Gibt es möglicherweise ein anderes Reporting - Tool, welches dazu in der Lage ist?

P.S.
Ich habe nun übrigens eine solche *.rpt Datei und kann Sie mit Hilfe ReportDocumnet.Load auch laden, nur zeigt es mir anschliessend keine Daten an, woran kann das liegen?


public FRM_Report(String Report,DataTable Table) {
   this.InitializeComponent();

   this.repDoc.Load(Report);
   this.repDoc.SetDataSource(Table);
  }

I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren

Ich habe da noch eine Frage, die mich gerade beschäftigt.
Gibt es keine Möglichkeit, im Designer Felder zu setzten, auch wenn ich keine Datenbankverbindung habe? Es könnte doch sein, dass ich mal Zuhause arbeiten möchte, wo ich keine Verbindung mit dem Datenbankserver habe. Also ich habe mir das so vorgestellt. Dass ich einfach ein Feld erzeuge und in dessen Eigenschaften dann festlegen, welcher Spaltenname dafür verwendet werden soll. Es kann doch echt nicht sein, dass man nur bei einer aktiven Datenbankverbingung einen neuen Report erstellen kann, was soll denn dass? 8o

I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren

Ein weiteres Problem habe ich mir der Tatsache, dass man scheinbar Charts zwar ausdrucken, jedoch nicht als Control in einem Formular darstellen kann...