Aufruf des vorherigen Formulars im Makro

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Senekurios
**
Beiträge: 26
Registriert: So, 13.03.2016 20:22

Aufruf des vorherigen Formulars im Makro

Beitrag von Senekurios »

Hallo,
ich habe folgende Problemstellung:

Ich rufe aus einem Formular 1 per Button und Makro ein Formular 2 auf. Dort wähle ich einen Datensatz aus, welcher dann per Makro in die zugehörigen Spalten der Tabelle von Formular 1 kopiert wird. Das Funktioniert aus prima. Nach dem Kopieren wird Formular 2 mit folgendem Code geschlossen:

Code: Alles auswählen

Dim oDoc As Object
Dim oDispatch As Object
oThisComponent.Parent.store() ' Save Data
oDoc = oThisComponent.CurrentController.Frame
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
oDispatch.executeDispatch(oDoc, ".uno:CloseDoc", "", 0, Array())
Im Anschluss möchte ich Formular 1 wieder aktivieren und neu laden, damit die übertragenen Daten auch angezeigt werden.
Das habe ich mit folgendem code leider erfolglos versucht:

Code: Alles auswählen

ThisDatabaseDocument.formdocuments.getbyname("Data").getbyname("Basic Data").open
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Filter").getByName("Basic_Data")
oForm.reload()
Bei

Code: Alles auswählen

oForm = oDrawpage.Forms.getByName("Filter").getByName("Basic_Data")
kommt die im Anhang gezeigte Fehlermeldung.

Kann mir hierbei jemand weiterhelfen?

Marko
Dateianhänge
Unbenannt.jpg
Unbenannt.jpg (15.24 KiB) 3498 mal betrachtet
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufruf des vorherigen Formulars im Makro

Beitrag von RobertG »

Hallo Makro,

wenn Du das Formulardokument über

Code: Alles auswählen

ThisDatabaseDocument.formdocuments.getbyname("Data").getbyname("Basic Data").open
gerade geöffnet hast, warum soll das Formular anschließend noch einmal neu eingelesen werden? Das wird es doch beim Öffnen.

oDoc bezieht sich bei Deinem Code auf die Komponente, von der aus das Makro gestartet wurde. Das ist doch vermutlich nicht die, in der das Forumar auch steckt, oder? Vielleicht hast Du ja keine Fehlermeldung mit

Code: Alles auswählen

oDoc = ThisDatabaseDocument.formdocuments.getbyname("Data").getbyname("Basic Data")
oDoc.open
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Filter").getByName("Basic_Data")
oForm.reload()
Habe ich aber hier nicht getestet.

Gruß

Robert
Senekurios
**
Beiträge: 26
Registriert: So, 13.03.2016 20:22

Re: Aufruf des vorherigen Formulars im Makro

Beitrag von Senekurios »

Hallo Robert,

danke für die Antwort. Leider funktioniert das auch nicht. Ich bekomme folgende Fehlermeldung: "BASIC-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden: Drawpage."
Senekurios
**
Beiträge: 26
Registriert: So, 13.03.2016 20:22

Re: Aufruf des vorherigen Formulars im Makro

Beitrag von Senekurios »

Hallo Robert,

manchmal liegt die Antwort so nah, dass man sie nicht mehr sieht. So geht es mir momentan zumindest.

Die Lösung liegt ganz einfach darin, dass man im Makro zum Aufruf von Formular 2 das Formular 1 erst schließt, bevor man Formular 2 öffnet. Dann kann man nach dem Schließen von Formular 2 das Formular 1 mit

Code: Alles auswählen

ThisDatabaseDocument.formdocuments.getbyname("Data").getbyname("Basic Data").open
wieder öffnen. Das aktualisieren erfolgt dann automatisch.
Danke für die Hilfe, wie immer.

Marko
Antworten