Ich bin noch Neuling in der Programmierung von Open Office,
und würde gerne wissen, wie ich beim Öffenen einer Datenbank ein Formular beim Start der Datenbankdatei öffnen kann, und wie ich von diesem Formular mit einer Schaltfläche andere Formulare öffnen kann.
Vielen Dank für
Eure Hilfe
Formular automatisch öffnen
Moderator: Moderatoren
Hei Weissauer,
Gruss
Thomas
In dem du das Formular extern ablegst. Dann ist es ein normales Writer-Dokument und du öffnest es ganz normal. Base brauchst du im Normalfall dann ja gar nicht. Und mit weitern Schaltflächen kannst du das Formular verändern oder neue Formulare aufrufen (auch extern gespeicherte). Musst du halt entsprechend programmieren.wie ich beim Öffenen einer Datenbank ein Formular beim Start der Datenbankdatei öffnen kann
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Wenn ich das Formular extra abspechere und somit eine eigene File habe, muss ich doch die OO Base-File an Datenquelle wieder anhängen?!
In Access gibts extra ein Menü mit dem man einstellen kann was sich beim öffnen der DB-Datei tun soll und auch was für menüs überhaupt noch zu sehen sein sollen.
Gibts sowas "einfaches" nicht auch in Base?
Zum Formzlar per Knopfdruck öffnen:
Hier ist es in Access ebenfalls pipi-einfach. Button einfügen, Aktion Formular öffnen, Formular wählen. Fertig. Beim späteren anklicken den Buttons öffnet sch das gewünscte Formular.
Gibts sowas auch in Base oder muss ich da anfangen Macros zu erstellen?
Wenn ich um Macros nicht herum komme: Kann mir jemand die paar Zeilen Code geben die man baucht um ein Formular mit dem Namen "xyz" zu öffnen?
Hab zwar schon gegoogelt und auch zum Teil code gefunden. Aber das war immer glech ne halbe Seite Code und hat noch viel mehr gemacht als nur ein Formular zu öffnen. Zum Teil waren 3..4 Methoden dafür nötig.
Kann doch aber nicht so schwer sein? Muss doch auch in 5 Zeilen gehen...
Gruß
Alex
In Access gibts extra ein Menü mit dem man einstellen kann was sich beim öffnen der DB-Datei tun soll und auch was für menüs überhaupt noch zu sehen sein sollen.
Gibts sowas "einfaches" nicht auch in Base?
Zum Formzlar per Knopfdruck öffnen:
Hier ist es in Access ebenfalls pipi-einfach. Button einfügen, Aktion Formular öffnen, Formular wählen. Fertig. Beim späteren anklicken den Buttons öffnet sch das gewünscte Formular.
Gibts sowas auch in Base oder muss ich da anfangen Macros zu erstellen?
Wenn ich um Macros nicht herum komme: Kann mir jemand die paar Zeilen Code geben die man baucht um ein Formular mit dem Namen "xyz" zu öffnen?
Hab zwar schon gegoogelt und auch zum Teil code gefunden. Aber das war immer glech ne halbe Seite Code und hat noch viel mehr gemacht als nur ein Formular zu öffnen. Zum Teil waren 3..4 Methoden dafür nötig.
Kann doch aber nicht so schwer sein? Muss doch auch in 5 Zeilen gehen...
Gruß
Alex
Nein, derzeitig noch nicht.Gibts sowas "einfaches" nicht auch in Base?
ja, in den Eigenschaften der Schaltfläche gibt es die Eigenschaft "Aktion" hier mußt Du "Dokument oder Webseite Öffnen" und die Adresse des Formulars eintragen.Gibts sowas auch in Base
Hab zwar schon gegoogelt und auch zum Teil code gefunden. Aber das war immer glech ne halbe Seite Code und hat noch viel mehr gemacht als nur ein Formular zu öffnen.
Vielleicht kannst Du bitte mal einen solchen Code posten - ich mache sehr selten was mit Base, nur das:
verstehe ich jetzt nicht sofort.Zum Teil waren 3..4 Methoden dafür nötig.
Ein Formular ist letztlich ein (Text)dokument und ich kenne da zum Öffnen nur die Methode .loadComponentfromURL
es geht in Einer:Kann doch aber nicht so schwer sein? Muss doch auch in 5 Zeilen gehen...
Code: Alles auswählen
dok = StarDesktop.loadComponentFromURL( ConvertToURL("C:\xyz.odt"),"_blank", 0,Dummy())
Gruß
Stephan
Also der Code den ich gefunden habe war dieser hier:
so langsam leuchtets mir auch ein. Aber OO Base liefert mir immer nen Laufzeitfehler. Das mit den aProps gefällt scheinbar nicht.
Deine Art ein Frumular zu öffnen benötigt ja den absoluten Pfad. Ist somit etwas schlecht wenn man die DB auf verschiedenen Rechnern einsetzen will. Oder wenn man die DB auf nem USB-Stick mit sich rumträgt.
Kennt sich vielleicht jemand gut genug mit Macros aus und kann den obigen Code verbessern so dass er funktioniert und man trotzdem nur den Formularnamen braucht (und keinen Pfad) um das Forumlar zu öffnen?
Gruß
Alex
Code: Alles auswählen
function OpenForm( formContainer as variant, oConnection as variant, sFormName as string) as variant
Dim aProp(1) As New com.sun.star.beans.PropertyValue
aProp(0).Name = "ActiveConnection"
aProp(0).Value = oConnection
aProp(1).Name = "OpenMode"
aProp(1).Value = "open"
OpenForm = formContainer.loadComponentFromURL(sFormName,"_blank",0,aProp())
end function
function getFormsTC() as variant
getFormsTC = thisComponent.Parent.getFormDocuments
end function
function getConnectionTC() as variant
getConnectionTC = thisComponent.Drawpage.Forms(0).ActiveConnection
end function
sub OpenForm_My_Form( oev as variant )
sFormName = "MyForm"
OpenForm( getFormsTC, getConnectionTC, sFormName )
end sub
so langsam leuchtets mir auch ein. Aber OO Base liefert mir immer nen Laufzeitfehler. Das mit den aProps gefällt scheinbar nicht.
Deine Art ein Frumular zu öffnen benötigt ja den absoluten Pfad. Ist somit etwas schlecht wenn man die DB auf verschiedenen Rechnern einsetzen will. Oder wenn man die DB auf nem USB-Stick mit sich rumträgt.
Kennt sich vielleicht jemand gut genug mit Macros aus und kann den obigen Code verbessern so dass er funktioniert und man trotzdem nur den Formularnamen braucht (und keinen Pfad) um das Forumlar zu öffnen?
Gruß
Alex
Sorry, mein Fehler. Ich nehm alles zurück und behaupte das Gegenteil.
Der Code funktioniert...
Hab da was falsch interpretiert.
Man muss nur für jeden Knopf der ein Formular öffnen soll eine OpenForm_xxx_yyy_zzz Methode anlegen und darin mit sFormName = "Formular_Name" den Namen des Formulars nennen.
Dann noch die entsprechenden Methode mit dem entsrechenden Knopf verbinden und fertig.
Sind also keine absoluten Pfade nötig und auch das auslagern der Formulare in einzele Files ist unnötig.
- Alex
Der Code funktioniert...

Man muss nur für jeden Knopf der ein Formular öffnen soll eine OpenForm_xxx_yyy_zzz Methode anlegen und darin mit sFormName = "Formular_Name" den Namen des Formulars nennen.
Dann noch die entsprechenden Methode mit dem entsrechenden Knopf verbinden und fertig.
Sind also keine absoluten Pfade nötig und auch das auslagern der Formulare in einzele Files ist unnötig.
- Alex