Seite 1 von 1

Berichts-Designer >Bericht extern aufrufen?

Verfasst: Fr, 07.12.2007 17:23
von egottfried
hallo
kann man mit dem Berichts-Designer Berichte auf Basis mehrerer Quellen, z.B. aus einer Tabelle Kunden und einer Abfrage Leistungen zusammenbringen? Gibt es Unterberichte? Oder muss man erst eine Abfrage mit allen benötigten Daten erstellen?
viele Güße
egottfried
edit:
ich habe es auf Basis einer Abfrage realisiert. Wenn ich auf Bericht ausführen klicke erhalte ich ein schon recht ordentlich aussehendes Writer Dokument zum Ausdrucken. Nun möchte man in einer Anwendung ja nicht erst in die Entwurfsansicht gehen, um von dort aus einen Bericht zu drucken. Kann man das Bericht ausführen mit einem Makro aus einem externen Formular heraus auslösen?
viele Grüsse
egottfried

Berichts-Designer >Bericht extern aufrufen?

Verfasst: Sa, 08.12.2007 17:47
von egottfried
hallo, ich muss meine Frage konkretisieren.
das ist eine funktionierende Datenbank, die Formulare sind extern abgespeichert. Ich arbeite also mit Writer-Formularen und der Datenbankverbindung ohne dass die .odb selbst geöffnet wird. Nun habe ich einen Bericht mit dem Designer erstellt, um auch Angebote u. Rechnungen drucken zu können. Kann ich den so erstellten Bericht extern speichern? Wenn nicht, dann entsteht das Problem, dass beim Aufruf des intern gespeicherten Berichts die .odb mit gestartet wird u. geöffnet bleibt, was ich eigentlich vermeiden wollte.
Wer weiß einen Ausweg? Alles wieder ändern und interne Formulare nehmen?
mit freundl. Grüssen
egottfried

Re: Berichts-Designer >Bericht extern aufrufen?

Verfasst: Sa, 08.12.2007 19:22
von egottfried
hallo,
hab die Fragen gekürzt und den Betreff geändert.
hoffe auf Tipps
egottfried

Re: Berichts-Designer >Bericht extern aufrufen?

Verfasst: So, 09.12.2007 01:51
von Tuete
Passt jetzt nur indirekt. Wie kann man ein Formular benutzen, ohne die Datenbak selbst öffnen zu müssen. Die Forensuche hat mir leider nicht weitergeholfen!

Tuete

Re: Berichts-Designer >Bericht extern aufrufen?

Verfasst: So, 09.12.2007 10:44
von Toxitom
Hey egottfried,

verstehe - ehrlich gesagt - deine Frage nicht. Der Berichtsdesigner kann nur in Base aufgerufen werden - die Entwurfsform. Ist schliesslich ein Teil von Base. Der resultierende Bericht ist Writer-Dokument - das kannst du speichern wo immer du willst. Das ist sowieso nicht in Base "drin" und hat auch keine Verbindung mehr zur Datenbank. Der Berichtsdesigner erzeugt auf der Basis des Entwurfs per Skript einen entsprechenden Bericht - und das ist in Base drin. Aber natürlich kannst du dieses Verfahren auch manuell per Skript nachbauen - und dann das Skriptmakro irgendwo speichern... nur, was soll das bringen?

@Tuete:
In dem du das Formular extern abspeicherst - also "Speichern unter" wählst. Dann ist das unabhängig von Base, die Datenbank-verbindung bleibt aber erhalten, so dass das Formuar auch ohne geöffneten Base-Container funktioniert. Voraussetzung natürlich, die Datenbank ist in OOo angemeldet und der Pfad somit bekannt.

Viele Grüße
Thomas

Re: Berichts-Designer >Bericht extern aufrufen?

Verfasst: So, 09.12.2007 12:44
von egottfried
Hallo, Tuete
in Base mit Datei-"Kopie speichern unter" ein offenes Formular als externes Formular speichern.
Das habe ich mit meinen Formularen gemacht und folgendes erreicht:
-mit Klick auf ein Desktopsymbol öffne ich das Hauptformular.odt
-von dort starte ich über einen Button das Formular VorgangS:

Code: Alles auswählen

Sub vorg_S
 Dim vDoc as Object
 Dim vDocCtl as Object
 Dim vElement as Object
 Dim vElementView as Object
 Dim DocPath as String
 Dim Args()
 DocPath = "file:///home/gottfried/Datenbank/VorgangS.odt"
 vDoc = StarDesktop.LoadComponentFromURL(DocPath,"_default",0,Args())
 wait 200
 vDocCtl = vDoc.getCurrentController()
 vForm = vDoc.drawpage.forms(0)
 vElement = vForm.getByName("start")
 vDocCtl.getControl(vElement).setFocus()
  wait 200
 FilterAus
End Sub 
In diesem Formular kann ich nach Datensätzen suchen. Es enthält Unterformulare, die auf Abfragen beruhen und berechnete Werte enthalten, so dass hier keine Eingaben möglich sind. Habe ich einen Datensatz zu bearbeiten, kann ich per Button zum Eingabeformular wechseln:

Code: Alles auswählen

Sub vorg_B
 Dim oDoc as Object
 Dim vDoc as Object
 Dim oDocCtl as Object
 Dim oForm as Object
 Dim oElement as Object
 Dim oElementView as Object
 Dim DocPath as String
 Dim Args()
 Dim suchtext As Integer
 oDoc = ThisComponent
 oDocCtl = oDoc.getCurrentController()
 oForm = oDoc.drawpage.forms(0)
 oElement = oForm.getByName("V_ID")
 oElementView = oDocCtl.getControl(oElement)
 vnr = oElementView.text 
 DocPath = "file:///home/gottfried/Datenbank/VorgangB.odt"
 vDoc = StarDesktop.LoadComponentFromURL(DocPath,"_default",0,Args())
 wait 500
 vDoc = ThisComponent
 vDocCtl = vDoc.getCurrentController()
 vForm = vDoc.drawpage.forms(0)
 vElement = vForm.getByName("V_ID")
 vElement.text = vnr
 suchtext = vElement.text
 vForm.Filter = "(" + """V_ID""" + "=" + "'" + suchtext + "'"+ ")"
 vForm.reload
 vFeld2 = vForm.getByName("start")
 vDocCtl.getControl(vFeld2).setFocus()
End Sub 
Darin kann ich den Vorgang verändern und ergänzen, weil sowohl Haupt- als auch Unterformular direkt mit den zugrunde liegenden Tabellen verbunden sind. Hier sehe ich z.B. nur Anzahl und EP, nicht den GP. Den sehe ich, wenn ich das Eingabeformular schließe und zurück wechsele zum VorgangS, wobei die V_ID erneut übergeben und das Formular neu geladen wird.

All das geschieht, ohne dass Base als Fenster geöffnet wird. Die DB-Verbindung besteht auch ohne dies. Und eben das wollte ich auch mit dem Bericht erreichen.
@ Toxitom - ...nur, was soll das bringen?
der Bericht soll, nachdem ein Vorgang fertig bearbeitet wurde als Druckvorschau aufgerufen und dann (als Angebot oder Rechnung) gedruckt werden können, aus eben diesem VorgangS (Übersichtsformular) heraus. Gespeichert werden soll er im Writer-Format nicht. Du schreibst, dass wäre evtl. per Code machbar. Wo findet man etwas darüber? Zusätzlich müsste in meinem Anwendungsfalle auch noch die V_ID als Filter an den Bericht übergeben werden. Das wäre dann ideal.
vielen Dank und schönen Sonntag
egottfried

Re: Berichts-Designer >Bericht extern aufrufen?

Verfasst: So, 09.12.2007 13:09
von Tuete
Wow, danke!
Gleich mal alles testen!

Tuete

Re: Berichts-Designer >Bericht extern aufrufen?

Verfasst: Mo, 10.12.2007 09:31
von Toxitom
Hey egottfried,
egottfried hat geschrieben:Du schreibst, dass wäre evtl. per Code machbar. Wo findet man etwas darüber?
Der Berichtsdesigner macht ja auch nichts anderes, als eine Writerdatei per Code zu erzeugen. Das kannst du natürlich auf der Basis der Formulare auch direkt per Basic machen. Das Formular beinhaltet dja auch das Resultset, also die ausgewählten Daten. Die kannst du bequem per Code (z.B. Basic) auslesen und in eine Writertabelle eintragen - bzw. ein komplettes Writer-Dokument erzeugen. Ist aber ziemlicher Aufwand. Ein kleines Beispiel habe ich mal in meinem Base-Buch beschrieben - das meinte ich mit "per Code erstellen".

Ungetestet: Evt. kannst du ja auch per Code Base im "hidden"-Mode aufrufen und dann dort den Bericht starten??

Gruss
Thomas