Formular per makro öffnen
Moderator: Moderatoren
Formular per makro öffnen
Hallo zusammen,
Ich möchte gerne ein Formular über einen Button(der sich in einen Formular befindet) öffnen ohne diese vorher extern zu speichern, also direkt aus base heraus.
Gab es zwar im Forum auch schon aber ich bin aus den Threads nicht wirklich schlau geworden und nach Stunden der rumprobiererei komm ich einfach nicht weiter.
Kann mir jemand helfen?
Vielen Dank schon mal im Voraus.
Ich möchte gerne ein Formular über einen Button(der sich in einen Formular befindet) öffnen ohne diese vorher extern zu speichern, also direkt aus base heraus.
Gab es zwar im Forum auch schon aber ich bin aus den Threads nicht wirklich schlau geworden und nach Stunden der rumprobiererei komm ich einfach nicht weiter.
Kann mir jemand helfen?
Vielen Dank schon mal im Voraus.
OpenOffice portable 2.1, Win XP
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Formular per makro öffnen
ich habe die Frage zwar nicht verstanden*, aber eine Antwort 
Gefunden in Andrews Base Dokument [funktioniert hier; Pfadname anpassen]
Hilft das?
* "...öffnen, ohne zu Speichern?..." Willst Du die gleiche Form ...? Form-Wechsel?

Gefunden in Andrews Base Dokument
Code: Alles auswählen
Sub openBaseForm
Dim pProp(1) As New com.sun.star.beans.PropertyValue
sURL = ConvertToURL("/home/USERNAME/Documents/oo2/OpenOffice.odb")
oDoc = starDesktop.loadComponentFromURL(sURL,"_blank",0,Array())
oForms = oDoc.getFormDocuments()
'oReps = oDoc.getReportDocuments()
oAConnection = oDoc.DataSource.getConnection("","")
'set properties
pProp(0).Name = "ActiveConnection"
pProp(0).Value = oAConnection
pProp(1).Name = "OpenMode"
pProp(1).Value = "open" ' OR: openDesign
' load the form: TargetFrameName and SearchFlags aren't used
oFormulario = oForms.loadComponentFromURL("Bereich","_blank",0,pProp())
End Sub
Hilft das?
* "...öffnen, ohne zu Speichern?..." Willst Du die gleiche Form ...? Form-Wechsel?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Formular per makro öffnen
Tut mir leid wenn ich mich ein bisschen unklar ausgedrückt habe.
Also, es ist so das ich zwei Formulare habe. In einem dieser Formulare befindet sich ein Button mit dem ich das andere öffnen möchte. Ich will allerdings das zweite nicht erst extern speichern da ja sonst die verknüpfungen mit Tabellen Abfragen.. dahin wären(oder ist das falsch?) und das Formular ständig verändert und aktualisiert wird.
Ich denke mal das Makro sollte das richtige sein. Ich probiers gleich mal aus.
Danke und bis gleich
Also, es ist so das ich zwei Formulare habe. In einem dieser Formulare befindet sich ein Button mit dem ich das andere öffnen möchte. Ich will allerdings das zweite nicht erst extern speichern da ja sonst die verknüpfungen mit Tabellen Abfragen.. dahin wären(oder ist das falsch?) und das Formular ständig verändert und aktualisiert wird.
Ich denke mal das Makro sollte das richtige sein. Ich probiers gleich mal aus.
Danke und bis gleich
OpenOffice portable 2.1, Win XP
Re: Formular per makro öffnen
Hab die Pfade angepasst aber ich bekomme mal wieder nen Fehler, und zwar:
URL seems to be an unsupported one.
Stimmt da was mit meinem Pfad nicht oder hab ich was vergessen auszutauschen.
Hab nämlich bis jetzt nur den Pfad bei sURL und den Formularnamen ausgetauscht.
URL seems to be an unsupported one.
Stimmt da was mit meinem Pfad nicht oder hab ich was vergessen auszutauschen.
Hab nämlich bis jetzt nur den Pfad bei sURL und den Formularnamen ausgetauscht.
OpenOffice portable 2.1, Win XP
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Formular per makro öffnen
Also, der Code ist zum Öffnen einer ODB und dann Öffnen des angegebenen Formulars.
Er ist nicht zum Öffnen eines weiteren Formulars aus einem Formular. Hier kenne ich mich auch nicht aus (arbeite nicht mit FORMS). Wenn Du in Andrews BASE-Beispielen nicht findest - kann ich Dich nur auf das englische Forum verweisen, wo DrewJensen vielleicht 2000 Mails zu BASE in zwei Jahren geschrieben hat (siehe auch die "sticky" threads im BASE-Forum)
Die Fehlermeldung "URL seems to be an unsupported one" (nach Änderung des Pfades/Dateinamens in der ConvertToURL()-Funktion) heisst schlicht, dass die URL falsch sei (= Tippfehler, nicht erreichbares Netzlaufwerk).
Er ist nicht zum Öffnen eines weiteren Formulars aus einem Formular. Hier kenne ich mich auch nicht aus (arbeite nicht mit FORMS). Wenn Du in Andrews BASE-Beispielen nicht findest - kann ich Dich nur auf das englische Forum verweisen, wo DrewJensen vielleicht 2000 Mails zu BASE in zwei Jahren geschrieben hat (siehe auch die "sticky" threads im BASE-Forum)
Die Fehlermeldung "URL seems to be an unsupported one" (nach Änderung des Pfades/Dateinamens in der ConvertToURL()-Funktion) heisst schlicht, dass die URL falsch sei (= Tippfehler, nicht erreichbares Netzlaufwerk).
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Formular per makro öffnen
Hm, also im Pfad gabs eigentlich keinen Fehler.
Gibts sonst noch ne möglich keit das Formular zu öffnen ohne die Bindung zu den Tabellen in Base zu lösen?
Mfg Stancer
Gibts sonst noch ne möglich keit das Formular zu öffnen ohne die Bindung zu den Tabellen in Base zu lösen?
Mfg Stancer
OpenOffice portable 2.1, Win XP
Re: Formular per makro öffnen
Hallo Stancer,
das was winfried schrieb ist schon ganz richtig.
Es ist in den englischen foren nur etwas kompliziert beschrieben.
also ich habe in meiner Hauptmaske auch ein Button, der/das auf eine andere Maske ("Artikel") verweist.
mit dem nachfolgenden Code kann ich die Maske zar kurz öffnen, aber dann nach der Abarbeitung des Makros bin ich wieder in der Hauptmaske.
Mir fehlt also noch das Codesegment, daß mir den Focus auf die ausgewählte Maske setzt.
Mal sehen, ob sich eine/r findet, der uns da weiterhelfen kann.
mit Gruß
Werner
das was winfried schrieb ist schon ganz richtig.
Es ist in den englischen foren nur etwas kompliziert beschrieben.
also ich habe in meiner Hauptmaske auch ein Button, der/das auf eine andere Maske ("Artikel") verweist.
mit dem nachfolgenden Code kann ich die Maske zar kurz öffnen, aber dann nach der Abarbeitung des Makros bin ich wieder in der Hauptmaske.
Mir fehlt also noch das Codesegment, daß mir den Focus auf die ausgewählte Maske setzt.
Code: Alles auswählen
Sub Artikeldatei_click 'openForm
Dim prop(1) as New com.sun.star.beans.PropertyValue
Dim dbContext As Object
Dim oDataSource As Object
dbContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = dbContext.GetByName("Minifaktura")
oForms = oDatasource.DatabaseDocument.FormDocuments
prop(0).Name="ActiveConnection"
prop(0).Value=oDataSource.getConnection("","")
prop(1).Name="OpenMode"
prop(1).Value="open"
oForms.loadComponentFromURL("Artikel","_blank",63,prop())
End Sub
mit Gruß
Werner
Re: Formular per makro öffnen
Hallo zusammen,
auch hier ist wieder das merkwürdige Phänomen, auf den englischsprachigen foren tun alle so als wäre es ok.
Aber bei meinen Versuchen schaffe ich es nicht, den Focus vom Ausgangsformular auf das Zielformular zu sezten.
Das Zielformular wird angezeigt und verschwindet auch wieder, so daß ich wieder im Ausgangsformular bin.
Da kann ich die angebotenen Lösungen In der Funktionsdarstellung (Zwei Funktionen plus aufrufendem Sub-Programmcode) oder die auch hier im Forum dargestellten Programmcode einsetzen.
Nichts funktioniert.
Erstaunlich ist auch, daß ich die Argumente "prop(0) und prop(1)" löschen kann, die Anweisung
"oForms.loadComponentFromURL("Artikel","_blank",0,prop())"
reicht, um das Formular "Artikel" kurz anzeigen zu lassen.
Wie also? ist der Focus vom aufrufenden Formualr an das Zielformular zu übergeben?
mit freundlichem Gruß
Werner
auch hier ist wieder das merkwürdige Phänomen, auf den englischsprachigen foren tun alle so als wäre es ok.
Aber bei meinen Versuchen schaffe ich es nicht, den Focus vom Ausgangsformular auf das Zielformular zu sezten.
Das Zielformular wird angezeigt und verschwindet auch wieder, so daß ich wieder im Ausgangsformular bin.
Da kann ich die angebotenen Lösungen In der Funktionsdarstellung (Zwei Funktionen plus aufrufendem Sub-Programmcode) oder die auch hier im Forum dargestellten Programmcode einsetzen.
Nichts funktioniert.
Erstaunlich ist auch, daß ich die Argumente "prop(0) und prop(1)" löschen kann, die Anweisung
"oForms.loadComponentFromURL("Artikel","_blank",0,prop())"
reicht, um das Formular "Artikel" kurz anzeigen zu lassen.
Wie also? ist der Focus vom aufrufenden Formualr an das Zielformular zu übergeben?
mit freundlichem Gruß
Werner
Re: Formular per makro öffnen
Hallo Werner,
Bei mir funktioniert das.
Zuerst habe ich mir ein Formular "Artikel" angelegt, weil dieses in Deiner Datenbank, die ich mir ja mal runtergeladen
habe, nicht vorhanden war.
Dann habe ich folgenden Code in Module1 hinzugefügt:
Anschließend habe ich im Formular "Kunden" eine Schaltfläche erstellt und diese dem obigen Makro zugewiesen.
Bei betätigen der Schaltfläche wird anstandslos das Formular "Artikel" aufgerufen und behält den Focus.
Ich denke, da ist was anderes faul.
Habe "meine" Datei mal angefügt. Mal sehen, ob das so bei Dir auch funktioniert.
Viel Erfolg.
Jürgen
Jetzt muss ich Dich leider enttäuschen.wega hat geschrieben: Das Zielformular wird angezeigt und verschwindet auch wieder, so daß ich wieder im Ausgangsformular bin.

Bei mir funktioniert das.

Zuerst habe ich mir ein Formular "Artikel" angelegt, weil dieses in Deiner Datenbank, die ich mir ja mal runtergeladen
habe, nicht vorhanden war.
Dann habe ich folgenden Code in Module1 hinzugefügt:
Code: Alles auswählen
Sub DatenbankDokumenterhalten
Dim prop(1) as New com.sun.star.beans.PropertyValue
Dim dbContext As Object
dbContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = dbContext.GetByName("Minifaktura")
oForms = oDataSource.DatabaseDocument.FormDocuments
oForms.loadComponentFromURL("Artikel","_blank",63,prop())
End Sub
Bei betätigen der Schaltfläche wird anstandslos das Formular "Artikel" aufgerufen und behält den Focus.
Ich denke, da ist was anderes faul.

Habe "meine" Datei mal angefügt. Mal sehen, ob das so bei Dir auch funktioniert.
Viel Erfolg.
Jürgen
- Dateianhänge
-
- Minifaktura_2.zip
- (21.49 KiB) 548-mal heruntergeladen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Formular per makro öffnen
Hallo Jürgen,
Danke für Deine Antwort.
Genau so, wie Du es beschreibst, sollte es funktionieren.
Bleibt bei Dir die Artikelmaske wirklich offen? So, daß man in ihr weiter arbeiten könnte, also Daten eingeben, Daten verändern, nach Daten suchen usw. um dann später wieder per Buttondruck zum Kundenmenü zurückzukehren.
Denn das funktioniert bei mir nicht. Sowohl mit Deiner Fassung, als auch mit meiner Fassung nicht.
Wie gesagt, die Artikelmaske leuchtet kurz auf und ist dann wieder weg. Keine Rede von Focuserhalt.
Was könnte da an einer Openoffice-Grundeinstellung falsch sein.
Übrigens ich arbeite mit Openenoffice 2.2.1 unter Windows XP.
mit freundlichem Gruß
Werner
Danke für Deine Antwort.
Genau so, wie Du es beschreibst, sollte es funktionieren.
Bleibt bei Dir die Artikelmaske wirklich offen? So, daß man in ihr weiter arbeiten könnte, also Daten eingeben, Daten verändern, nach Daten suchen usw. um dann später wieder per Buttondruck zum Kundenmenü zurückzukehren.
Denn das funktioniert bei mir nicht. Sowohl mit Deiner Fassung, als auch mit meiner Fassung nicht.
Wie gesagt, die Artikelmaske leuchtet kurz auf und ist dann wieder weg. Keine Rede von Focuserhalt.
Was könnte da an einer Openoffice-Grundeinstellung falsch sein.
Übrigens ich arbeite mit Openenoffice 2.2.1 unter Windows XP.
mit freundlichem Gruß
Werner
Re: Formular per makro öffnen
Morgen Werner,

Schöne Grüße
Jürgen
Ja.wega hat geschrieben: Bleibt bei Dir die Artikelmaske wirklich offen? So, daß man in ihr weiter arbeiten könnte?
Ja.wega hat geschrieben:also Daten eingeben
Habe ich nicht versucht, weil es mir ehrlich gesagt zuviel Arbeit ist das auszuprobieren.wega hat geschrieben:Daten verändern, nach Daten suchen usw. um dann später wieder per Buttondruck zum Kundenmenü zurückzukehren.

Kann ich mir noch nicht erklären, oder setzt Du per Makro einen Focus auf ein Formularfeld im ersten Formular?wega hat geschrieben:Wie gesagt, die Artikelmaske leuchtet kurz auf und ist dann wieder weg. Keine Rede von Focuserhalt.
Habe da noch keinen Schimmer.wega hat geschrieben:Was könnte da an einer Openoffice-Grundeinstellung falsch sein.
ditowega hat geschrieben:Übrigens ich arbeite mit Openenoffice 2.2.1 unter Windows XP.
Schöne Grüße
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Formular per makro öffnen
Genau die habe ich jetzt auch probiert. (Ist ja schon noch blöd, dass dies soo kompliziert ist)
Hat leider nicht funktioniert.
Sub Formular_oeffnen
Dim prop(1) as New com.sun.star.beans.PropertyValue
Dim dbContext As Object
Dim oDataSource As Object
dbContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = dbContext.GetByName("Betriebsbuch")
oForms = oDataSource.DatabaseDocument.FormDocuments
oForms.loadComponentFromURL("Reinigungsplan","_blank",63,prop())
End Sub
Meine Datenbank heißt Betriebsbuch.odb, das zu öffnende Formular Reinigungsplan
Habe ich da irgendetwas missverstanden?
Muss ich für jeden Button ein eigenes Makro schreiben?
Die Datenbank geht dann DAU (Dümmster anzunehmender User), weshalb mir externe Formulare gar nicht mal unlieb sind. Nur wie verbinde ich die dauerhaft mit der Datenbank, um dann ausschließlich über die Formulare die Datenbank zu pflegen. Wegen der hohen Kosten im Verhältnis zur kleinen Anwendung wollte ich hier Access eigentlich vermeiden.
Hat leider nicht funktioniert.
Sub Formular_oeffnen
Dim prop(1) as New com.sun.star.beans.PropertyValue
Dim dbContext As Object
Dim oDataSource As Object
dbContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = dbContext.GetByName("Betriebsbuch")
oForms = oDataSource.DatabaseDocument.FormDocuments
oForms.loadComponentFromURL("Reinigungsplan","_blank",63,prop())
End Sub
Meine Datenbank heißt Betriebsbuch.odb, das zu öffnende Formular Reinigungsplan
Habe ich da irgendetwas missverstanden?
Muss ich für jeden Button ein eigenes Makro schreiben?
Die Datenbank geht dann DAU (Dümmster anzunehmender User), weshalb mir externe Formulare gar nicht mal unlieb sind. Nur wie verbinde ich die dauerhaft mit der Datenbank, um dann ausschließlich über die Formulare die Datenbank zu pflegen. Wegen der hohen Kosten im Verhältnis zur kleinen Anwendung wollte ich hier Access eigentlich vermeiden.
-
- *
- Beiträge: 16
- Registriert: Do, 20.09.2007 08:18
Re: Formular per makro öffnen
Hallo, ich habe mir das Beispiel mal runtergeladen und auf meinem rechner gestartet. wenn ich im formular 'Kunden' auf den Button 'Artikel' gehe, kommt folgende Fehlermeldung. ich habe vista, oo 2.3 und wenig Datenbankerfahrung. Villeicht ein Tip, woran es hängt????
Gruß�ür�n
Gruß�ür�n
Re: Formular per makro öffnen
Hallo Jürgen,
hast Du die Datenbank unter dem Namen bei OOo angemeldet, der im Makro verlangt wird? Ich glaub, wenn nicht, kommt diese Fehlermeldung.
Viele Grüße�hQ
hast Du die Datenbank unter dem Namen bei OOo angemeldet, der im Makro verlangt wird? Ich glaub, wenn nicht, kommt diese Fehlermeldung.
Viele Grüße�hQ