Rechnung und Bestellreport per CrystalReport

jccTeq

Erfahrenes Mitglied
Hi Leute,

ich hab mir gerade mal die diversen Beiträge hier zum Thema CrystalReports angeschaut, bin daraus aber nicht wirklich schlau geworden.

Mein Problem sieht folgendermaßen aus:
Ich schreibe ein Programm zur Verwaltung eines WebShops (basierend auf osCommerce). Dieses Programm soll fähig sein, aus den im Shop getätigten Bestellungen automatisch die Rechnung/Zahlungserinnerung/Mahnung zu erstellen und dem Benutzer des Programms (dem ShopOwner) die Möglichkeit geben, sich einen Bericht über alle Bestellungen, Produkte etc. ausdrucken zu können.

Dafür wäre CrystalReports wohl prädestiniert. Aber wie funktioniert das? Also für den ganz einfachen Einstieg wäre es erstmal schon interessant, wie ich die Rechnung erstellen kann.

Ich habe das Report-Dokument erstellt, mit Dokument-Kopf, "Rechnung" und Fuß und so weiter. Jetzt möchte ich, daß dazwischen eine Tabelle eingetragen wird, in der Artikelname, Menge, Einzelpreis und Gesamtpreis eingetragen wird.

Also ich möchte dem Report Datensätze zuweisen können (bspw. Pseudo-Code: Report.Rows.Add(tRow);), welche er dann als Positionen auf der Rechnung aufführt. Am Ende möchte ich dann natürlich die Gesamtsumme (brutto und netto) stehen haben.

Um das ganze jetzt zu spezifizieren: ich habe DataRows mit bestimmten Feldern, die im Report als Tabelle gelistet werden sollen. Dann habe ich im Report bestimmte Felder, die mit einzelnen Werten gefüllt werden sollen (strings, ints, doubles etc.).

Die Frage dazu kurz und knackig: Wie mach ich das?

Danke

Gruß,
Hendrik
 

Norbert Eder

Erfahrenes Mitglied
Ganz ehrlich? Nimm CrystalReports nicht.

Zwei Möglichkeiten:
1. Reporting Services vom SQL Server (Sind nun auch eim SQL Server 2005 Express dabei)
2. Report-Generierung via XSL-Transformation (sehr flexibel)
 

jccTeq

Erfahrenes Mitglied
Ich arbeite (leider? zum Glück?) mit MySQL als Datenbankserver. Und von XSLT Transformation hab ich noch nicht so die große Ahnung. Es wäre schon schön, wenn ich wie bei CR ein ReportDokument so erstellen könnte mit Feldern und Textboxen und so eintragen und dann "einfach" die Daten da reinpump...

Weißt du (oder die anderen) weitere Alternativen zu CR, die obige Wünsche erfüllen?
 

Norbert Eder

Erfahrenes Mitglied
Mit dem Report-Designer kannst du auf unterschiedliche Datenquellen zugreifen. Ich denke, dass hier MySQL auch nicht wirklich ein Problem darstellen sollte.

Ansonsten, wie gesagt, eine XSL-Transformation. Hierzu musst du die Daten nur in einem XML-File ablegen (geht via eines DataSets ganz einfach) und dann einfach noch ein XSL-Stylesheet schreiben. Das ist auch nicht sehr schwer, da du im Endeffekt damit dann nur eine HTML-Seite erstellst, welche du in einem Browser-Control anzeigen kannst.

Der Vorteil an der Variante ist, dass du die Reports ändern/anpassen kannst, ohne die Software neu kompilieren zu müssen. Ausserdem schränken solche Tools á la Crystal Reports in der Regel ein und lassen dir nicht alle Möglichkeiten offen.
 

Nico Graichen

Erfahrenes Mitglied
Hi,

Wie bringst du die Daten denn in deinen Report? Per SQL oder über DataSets aus deiner Anwendung?
Wenn SQL:
Ist das Thema hier erstmal falsch ;)
Bei Angeben der Connection kannst du auch die Tabellen, Views, .. auswählen, die du im Report verwenden willst.
Im ObjektExplorer (oder wie das Ding noch mal heißt) kannst du die Felder auswählen und einfach an die entsprechende Stelle im Report ziehen.
Du kannst die DB-Felder auch in Formelfeldern verwenden, wenn du Spezialbehandlungen dafür hast.
Um eine Tabelle aufzubauen, brauchst du nur deine Einzelpreis, etc. in die Details-Section zu ziehen und es wird automatisch für jeden Datensatz eine neue Zeile angelegt.
Im Report-Footer dann noch ein Summenfeld über alle Gesamtbeträge und fertig :D
 

jccTeq

Erfahrenes Mitglied
Eigentlich wollte ich das per DataSet machen, also ist es hier wohl richtig. Ich stell mir das so vor, daß ich "einfach" nur ein Report-Objekt habe, in dessen DataSet ich eine Tabelle einfüge, mit Rows, die aus den einzelnen in der MySQL DB abgelegten Bestellungen zusammengesetzt werden. Also ich pick mir einzelne Werte aus der DB und packe diese in eine Row, welche ich einer Tabelle zuweise, welche wiederum dem DataSet des Reports zugewiesen ist. Ist das korrekt so?

Wenn jemand Beispiele dazu kennt, wo das anschaulich und so "simpel" wie möglich erklärt ist, wäre ich auch für Links dazu sehr dankbar. :)