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