CrystalReports: Rechnungsformular zu Auftragsformular umwandeln

Aus GEVITAS
Wechseln zu: Navigation, Suche

1 Allgemeines

Dieser Artikel gibt Tipps, wie man ein Formular (einen Report), das auf die Rechnungsdaten zugreift, so umbaut, dass daraus eine Auftragsbestätigung wird.

Dazu öffnet man das Formular (die Report-Datei) mit Crystal-Reports im Formular-Ordner "Rechnung".

Wichtig!
  • Speichern Sie die Datei gleich unter einem anderen Namen im Formular-Ordner "Auftrag"! Überschreiben Sie niemals die Original-Datei!
  • Dieser Artikel setzt Kenntnisse von Crystal-Reports voraus!

2 Datenbank-Zugriff

2.1 Anfangszustand

Ein Report für ein Rechnungsformular greift normalerweise auf diese Datenbank-Tabellen zu:

CrystalReport Bsp Rechnung DatenbankVerkn.png

Tabelle Beinhaltet
RECHKO Rechnungskopf
RECHFU Rechnungsfuss, 1:1 verknüpft über die RECHNR mit dem Rechnungskopf
RECHPO Rechnungspositionen, 1:n verknüpft über die RECHNR mit dem Rechnungskopf
MARTTEXT Optional die Artikel-Textbausteine
PERS Optional die Personentabelle, wenn man. z.B. die EMail-Adresse des Bearbeiters auf der Rechnung drucken will.

2.2 Tabellen-Namen ändern

Nun muss man die Namen der Tabellen ändern, so dass sie nicht mehr auf die Rechnungen verweisen sondern auf die Auftragsdaten. Das ist nicht ganz so einfach, weil die Struktur der Rechnungstabellen etwas anders ist als die der Auftragstabellen. So gibt es z.B. in den Rechnungstabellen das Feld RechNr als zentrales Verbindungsglied der Tabellen, im Auftrag ist es das Feld AuftrNr.

Tabelle Beinhaltet
MAUFKO Auftragskopf
MAUFFU Auftragsfuss, 1:1 verknüpft über die AUFTRNR mit dem Auftragskopf
MAUFPO Auftragspositionen, 1:n verknüpft über die AUFTRNR mit dem Auftragskopf

Klicken Sie auf das Menü Datenbank --> Datenquellenpfad festlegen. Mit diesem Dialog kann man die Tabellen ersetzen:

CrystalReport Bsp Rechnung Datenquellen1.png

  • Im oberen Teil werden die Tabellen des Reports angezeigt
  • Im unteren Teil klicken Sie auf den verwendeten Alias (z.B. "REFLEX") und öffnen den Baum bis zu den Tabellen.
  • Dann klicken Sie im oberen Teil auf die Tabelle RECHKO und unten auf MAUFKO.
  • Danach klicken Sie auf Aktualisieren.

CrystalReport Bsp Rechnung Datenquellen2.png

CrystalReports hat nun festgestellt, dass es unterschiedliche Felder in den Tabellen gibt. Die Felder mit dem gleichen Namen konnten zugeordnet werden, Felder mit unterschiedlichen Namen müssen manuell zugeordnet werden:

CrystalReport Bsp Rechnung Datenquellen3.png

Bisheriges Rechnungsfeld Zugeordnetes Auftragsfeld
RECHNR AUFTRNR
RECHDAT BESTDAT (Auftragsbestätigungsdatum). Sie können diese Zuordnung aber auch weglassen.

Klicken Sie auf OK.

Wiederholen Sie diesen Vorgang für die Tabellen RECHFU-->MAUFFU und RECHPO-->MAUFPO.

  • Wenn Sie Unterberichte im Report haben, müssen Sie diese Schritte auch für die Tabellen der Unterberichte ausführen!

Schließen Sie dann den Dialog Datenquellenpfad festlegen und speichern Sie die Report-Datei. Empfehlenswert ist es, jeden Stand erst einmal unter einer Versionsnummer ("Auftrag_V1" usw.) zu speichern, damit man notfalls auf die vorherige Version zugreifen kann.

2.3 Datenbank überprüfen

Nun sollte man CrystalReports dazu bringen, die Datenbak zu aktualisieren, damit die Felder, die es in der Auftragstabelle zusätzlich gibt, in die Report-Datei aufgenommen werden.

  • Klicken Sie dazu auf das Menü Datenbank --> Datenbank überprüfen.

Dabei kann es Fehlermeldungen geben, weil bestimmte Felder nun nicht mehr gefunden werden. Beispielweise haben wir oben das Feld RECHDAT nicht zugeordnet, weil es im Auftrag dazu kein gleiches Gegenstück dazu gibt.

CrystalReport Bsp Rechnung Datenquellen4.png

In diesem Beispiel zeigt die Meldung, dass in einem Feld auf RECHKO.DRUCKDAT Bezug genommen wird, ein Feld, das es nun nicht mehr gibt! In diesem Fall kann man die Formel

if IsNull({RechKO.DRUCKDAT}) or {RechKO.DRUCKDAT} < CDate(1900,1,1) then
   ToText({RECHKO.RECHDAT},"dd.MM.yyyy") 
else 
   ToText({RechKO.DRUCKDAT},"dd.MM.yyyy");

einfach ersetzen durch:

ToText({RechKO.DRUCKDAT},"dd.MM.yyyy");

Haben Sie das Feld RechKO.DRUCKDAT in direkt Ihrem Report, wird es automatisch entfernt! Sie müssen dann ein passendes Feld der Auftragstabellen einfügen oder die Stelle komplett entfernen.


2.4 Tabellen-Aliase ändern

Dieser Schritt ist aus technischer Sicht nicht notwendig, sollte aber trotzdem durchgegführt werden:

Die Tabellen-Namen haben wird zwar geändert, in der Report-Datei heißen die Tabellen aber immer noch "RECH...", obwohl sie auf "MAUF..." verweisen! Das ist unschön und kann bei einer späteren Bearbeitung des Reports zu Verwirrung führen! Wir werden das deshalb korrigieren.

Klicken Sie dazu auf das Menü Datenbank --> Datenbank-Assistent. Rechts werden die Tabellen-Namen angezeigt.

Klicken Sie nacheinander auf die Tabellen

  • RECHFU
  • RECHKO
  • RECHPO

und klicken mit der rechten Maustaste. Wählen Sie aus dem Popup-Menü Umbenennen und benennen die Namen entsprechen in "MAUF..." um:


CrystalReport Bsp Rechnung Datenquellen5.png


3 Fertig

Ihr Report sollte nun funktionieren. Sie müssen nun noch die kosmetischen Änderungen ausführen, also z.B. den Begriff "Rechnung" durch "Auftrag" ersetzen usw.

4 Hinweis

Das Ganze geht natürlich auch umgekehrt, also vom Auftragsformular zum Rechnungsformular, man muss dann halt die Tabellen-Namen und Felder umgekehrt ändern, wie hier beschrieben...

5 Links