Formular automatisch öffnen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Weissauer
Beiträge: 2
Registriert: Mi, 09.08.2006 23:57

Formular automatisch öffnen

Beitrag von Weissauer »

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
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hei Weissauer,
wie ich beim Öffenen einer Datenbank ein Formular beim Start der Datenbankdatei öffnen kann
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.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
alex0801
*
Beiträge: 14
Registriert: Di, 15.08.2006 12:02
Kontaktdaten:

Beitrag von alex0801 »

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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Gibts sowas "einfaches" nicht auch in Base?
Nein, derzeitig noch nicht.
Gibts sowas 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.
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:
Zum Teil waren 3..4 Methoden dafür nötig.
verstehe ich jetzt nicht sofort.

Ein Formular ist letztlich ein (Text)dokument und ich kenne da zum Öffnen nur die Methode .loadComponentfromURL
Kann doch aber nicht so schwer sein? Muss doch auch in 5 Zeilen gehen...
es geht in Einer:

Code: Alles auswählen

dok = StarDesktop.loadComponentFromURL( ConvertToURL("C:\xyz.odt"),"_blank", 0,Dummy())


Gruß
Stephan
alex0801
*
Beiträge: 14
Registriert: Di, 15.08.2006 12:02
Kontaktdaten:

Beitrag von alex0801 »

Also der Code den ich gefunden habe war dieser hier:

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
alex0801
*
Beiträge: 14
Registriert: Di, 15.08.2006 12:02
Kontaktdaten:

Beitrag von alex0801 »

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
Antworten