Sonntag, 25. März 2012

Keine Angst vor dem AvERP-Designer

Beim Stöbern durch die zahlreichen Reports die AvERP mitbringt trifft man oft auf Nützliches, wie z.B. den Servicebericht unter Angebots-Auftragsverwaltung Drucken. Leider wurde vom Ersteller vergessen das Logo aus dem Mandantenstamm einzublenden, sondern fix das Hersteller-Logo SYNERPY eingebunden.

Öffnen im Bearbeitungmodus aus der Druckvorschau.(Ein "alter Report" über Fast-Report 2 wird über Doppelcklick geöffnet.) zeigt, wieder über Click auf dem Logo, den Objekt Inspektor für "Picture 1".
Über die 3-Punkte-Taste auf der Eigenschaft Picture zeigt sich die direkt eingebundene Bitmap.

Bleibt als 1. die Frage wie der Report benannt ist. Ein aktuelle AvERP-Version - ich nutze zu Zeit meist die 4.2.5.65 aus dem aktuellen Release (die AvERP-Version wird über "AvERP/Hilfe/Info" angezeigt.) - zeigt mit Anmeldung "SYSDBA" den Reportnamen als Tooltip und grau eingeblendet :
hier FRDCBAUFSERV. Hilfreich ist es auch sich einen Reportnamen auszuwählen, der die zu Ändernde Eigenschaft mitbringt - nämlich das Logo aus /Averp/Stanndaten/Mandant/2. Formular zu verwenden- wie der Report "Angebot" alter FastReport   FRDCMAUSMB.

AvERP-Designer aufgerufen - als SYSDBA.
Formuarauswahl "Druckformular" gecheckt.
Reportname "FRDCMA" Anfang reicht - eingetippt um auf FRDCMAUSMB zu positionieren
und "Editieren"


Frage "Bestehendes Formular als Editervorlagebenutzen" Bestätigen und es öffnet sich die
DesignSteuerung und die Maske "FRDCMAUSB".

Rechts-Klick in der Maske läßt die Wahl zwischen
Objektinspektor und
Designreport

Ich prüfe erst einmal im Designreport, wie das Mandanten-abhängige Logo eingebunden ist.

Click auf das Logo blendet die Eigenschaften im Objekt Inspektor innerhalb des Designer eins.
Mit passiert es immer wieder, das das Fenster "Objekt Inspektor" nicht zu sehen ist. Dann hilft
Werkzeuge/Symbolleisten/Objekt Inspektor  wieder über CheckBox zu aktivieren.


 Ich sehe nun das das Objekt fLogo über [q_rep17."LOGO_F"] im DataField mit Daten versorgt wird.

Was mag q_rep17 sein?  Dann die Design Steuerung schließen und den Objekt Inspektor über der Report-Maske öffnen. Um auf q_rep17 zu Positionieren hilft es , so lange  "q" einzutippen
bis auf q_rep17 erreicht ist.
In den Eigenschaft ganz nach unten gescrollt zeigt das passende SQL
mit Click auf [TStrings] - nämlich - wie gedacht - SELECT * FROM V_BMAND.
Interessant sind noch die Verknüpfungen zu anderen Queries in MasterSource und MasterLinks.
Führend für das MandantenLogo sollte die Zuordnung Auftrag - Mandant sein.

MasterSource ist damit über d_rep1 zugeordet - dahinter liegt mit q_rep1 SELECT * FROM V_BAUF und die Verknüpfung erfolgt über MasterLinks (V_BMAND.)ID =V_BAUF.BMAND_ID.

Mit dieser Vorbereitung mach ich mich nun an den Servivebericht und öffne
FRDCBAUFSERV im Designer. Wie erwartet ist das DataField zu Picture1 leer.

Öffnen der q_rep17 im Objekt Inspector zeigt, daß die q_rep17 nicht belegt ist und die q_rep1
wie erwartet auf den Auftrag V_BAUF zeigt. Schnell im Objekt Instpektor einfach die q_rep17
analog dem Druck Angebot gefüllt und zur Sicherheit "Formular + Report speichern".

Design Editor öffnen und dem Report die q_rep17 bekannt machen über

//Design Editor/Datei/Variablenliste/Datenquellen   fr_rep17 hinzufügen
und genauso Feldaliase q_rep17 hinzufügen!
Nach Schließen und Öffnen Designer stehen dem Report wie in der Symbolleiste
DB-Feld einfügen, die Felder der View V_BMAND und damit auch das Mandanten-Logo
als Datenfelder zur Verfügung.


Und der 1.Druckversuch zeigt das wie immer nicht das Gewünschte passiert, es wird statt des Mandanten-Logos einfach "GarNichts" gedruckt!

Warum??

Das fenste Logo wurde bisher im Band "Seitenkopf" gedruckt. Steht dort etwa der aktuelle Auftrag und der daran gebundene Mandant nicht zur Verfügung?

Testweise das Logo ins Band dadrunter verschoben.

Und siehe da - Hypothes bestätigt - jetzt taucht ein Logo auf - natürlich nicht dort wo es gewünscht wird.

Jetzt kann der Rest ja nicht mehr so schwer sein.
Aber mühseelig - 

Die Höhe des bisherigen Seitenkopfes reduziert. Das Unterformular1 auf den frei werdenden Platz
ausdehnen- entweder über Maus - etwas für ruhige Hände - oder durch Eingabe im Objekt Inspektor
bei Top und Height.


Ergebnis wird fürchterlich - der vorher ordentlich desigte Report wird über 3 Seiten verteilt.
Gut wenn man eine Rollback - Möglichkeit hat. Entweder indem die Frage "Report speichern" einmal Bejaht wird, dann wird eine *.frf-Datei im lokalen Programm-Verzeichnis unter MASKEN abgespeichert - und kann über den Designer über Report-Laden zurückgeholt werden, oder man hat sich das vom AvERP angelegt *.RES-File im MASKEN-Verzeichnis unter anderem Namen gesichert
und kann es nach Umbenennen auf Report *. RES über RES-Laden erneut einlesen
oder schafft es im äußersten Notfall das Ressource-File direkt auf der Datenbank aus der Tabelle
A_MASKEN_HIST zu restaurieren. (A_MASKEN.RES per IBExpert BlobViewer nach Datei
FRDCBAUFSERV.RES speichern un die Datei per Designer "aus *RES laden" einlesen.)

Geglückt : jetzt etwas vorsichtiger mit der Kosmetik.
Noch die Lücken im Rahmen schließen und Servicebericht gegen Logo freistellen.

Genau diese Änderung erzeugt ungewüschte Seiten!

Nun halt Schritt für Schritt herantasten.

Das Problem "3 statt eine 1 Seite" hängt irgendwie mit der Fußzeile zusammen. Nach längerem erfolglosen problieren mit dem Seitenfuß erinnere ich mich daran, daß in den AvERP-Reports gerne die Fußzeile übersteuert wird. Und tatsächlich, beim Öffnen des Probedrucks im Bearbeiten Modus
wird ein Feld Seitenfuss_T2 angezeigt das zur allgemeinen Verwirrung des unvoreingenommenen AvERP-DAUs im Seitenkopf liegt, aber die die Parameter für TOP, HEIGHT, LEFT, WIDTH
über das Memofeld ganz brutal überschreibt:

Es lohnt immer im Designer auf ein angedeutetes Script-Feld zu klicken - es kann WerWeißWas dahinter stecken.