Formular per makro öffnen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Stancer
***
Beiträge: 67
Registriert: Do, 21.06.2007 14:05

Formular per makro öffnen

Beitrag von Stancer »

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.
OpenOffice portable 2.1, Win XP
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular per makro öffnen

Beitrag von komma4 »

ich habe die Frage zwar nicht verstanden*, aber eine Antwort :-)
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 
[funktioniert hier; Pfadname anpassen]
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)
Stancer
***
Beiträge: 67
Registriert: Do, 21.06.2007 14:05

Re: Formular per makro öffnen

Beitrag von Stancer »

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
OpenOffice portable 2.1, Win XP
Stancer
***
Beiträge: 67
Registriert: Do, 21.06.2007 14:05

Re: Formular per makro öffnen

Beitrag von Stancer »

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.
OpenOffice portable 2.1, Win XP
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular per makro öffnen

Beitrag von komma4 »

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).
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)
Stancer
***
Beiträge: 67
Registriert: Do, 21.06.2007 14:05

Re: Formular per makro öffnen

Beitrag von Stancer »

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
OpenOffice portable 2.1, Win XP
wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

Re: Formular per makro öffnen

Beitrag von wega »

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.

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 
Mal sehen, ob sich eine/r findet, der uns da weiterhelfen kann.

mit Gruß
Werner
wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

Re: Formular per makro öffnen

Beitrag von wega »

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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Formular per makro öffnen

Beitrag von turtle47 »

Hallo Werner,
wega hat geschrieben: Das Zielformular wird angezeigt und verschwindet auch wieder, so daß ich wieder im Ausgangsformular bin.
Jetzt muss ich Dich leider enttäuschen. :(

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
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. 8)

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
wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

Re: Formular per makro öffnen

Beitrag von wega »

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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Formular per makro öffnen

Beitrag von turtle47 »

Morgen Werner,
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
Ja.
wega hat geschrieben:Daten verändern, nach Daten suchen usw. um dann später wieder per Buttondruck zum Kundenmenü zurückzukehren.
Habe ich nicht versucht, weil es mir ehrlich gesagt zuviel Arbeit ist das auszuprobieren. :oops:
wega hat geschrieben:Wie gesagt, die Artikelmaske leuchtet kurz auf und ist dann wieder weg. Keine Rede von Focuserhalt.
Kann ich mir noch nicht erklären, oder setzt Du per Makro einen Focus auf ein Formularfeld im ersten Formular?
wega hat geschrieben:Was könnte da an einer Openoffice-Grundeinstellung falsch sein.
Habe da noch keinen Schimmer.
wega hat geschrieben:Übrigens ich arbeite mit Openenoffice 2.2.1 unter Windows XP.
dito

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
heppspr
Beiträge: 2
Registriert: Fr, 19.10.2007 00:28

Re: Formular per makro öffnen

Beitrag von heppspr »

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.
juergen2912
*
Beiträge: 16
Registriert: Do, 20.09.2007 08:18

Re: Formular per makro öffnen

Beitrag von juergen2912 »

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
fehler.jpg
fehler.jpg (50.38 KiB) 7746 mal betrachtet
AhQ
*******
Beiträge: 1096
Registriert: Fr, 15.06.2007 11:03
Wohnort: Regensburg
Kontaktdaten:

Re: Formular per makro öffnen

Beitrag von AhQ »

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
Gesperrt