Re: [de-users] Base: zwei Formulare sind geöffnet. Wie beide zugleich aktualisieren?

2017-06-22 Diskussionsfäden Gerhard Dittrich

Vielen Dank für Deine Infos, Gerhard

Wunderbar, nun werden beide Dokumente bei der Änderung des einen 
Dokuments aktualisiert.
Ja, hier die Grundstrukter. Ja, richtig: Die Feinheiten, wie 
Repositionieren, sind als nächster Schritt erforderlich.


Grüße
Gerhard

Der Makro in seiner Grundstruktur, wie er nun läuft.

SUB Reload_aAnmeldung
DIM oDoc1 AS OBJECT 'Document 1
DIM oDoc2 AS OBJECT 'Document 2
DIM oDrawpage AS OBJECT
DIM oDATEN AS OBJECT
DIM oForm AS  OBJECT
oDATEN = thisComponent.Drawpage.Forms.DATEN
oDATEN.reload() 'reload Document 1
oForm = thisComponent.Parent.FormDocuments
oDoc2 = oForm.getByName("aAnmeldung_Tab").open 'Document 2
oDATEN = oDoc2.Drawpage.Forms.DATEN  'reload Document 2
oDATEN.reload()   'reload Document 2
WAIT 50
oForm.getByName("aAnmeldung").open 'Document 1 wieder als aktives 
Document auf dem Bildschirm als unmittelbare Ansicht

 End Sub




Am 21.06.2017 um 22:43 schrieb Gerhard Weydt:
Hallo Gerhard,  > > Schnipsel sind insbesondere in Base nicht ganz einfach zu liefern, 
> weil da doch die Daten- und Dokumentstruktur mit reinspielt. Ich habe 
> den folgenden Code an einem Beispiel, das ich sowieso hatte, > 
ausprobiert. Das enthielt zwei nahezu identische Formular-Dokumente. > 
Ich nenne so, um Missverständnisse zumindest zu erschweren, das, was > 
man als "Formular" im Base-Dokument aufruft - in Übereinstimmung mit > 
der Nomenklatur in UNO: FormDocuments - und was, je nach dem, was man > 
dann definiert, sich auf viele Tabellen beziehen kann, im Gegensatz > 
zum Formular innerhalb eines Formular-Dokuments, das genau auf eine > 
Tabelle (Ansicht, Abfrage) bezogen ist. In diesem Sinn willst du ein > 
zweites Formular-Dokument aktualisieren, wenn ein erstes verwaltet > 
wird (was natürlich, wie in deinem Fall, nur sinnvoll ist, wenn es > 
Überschneidungen in den angezeigten Tabellen gibt). Meine zwei > 
Formular-Dokumente haben mehrere Formulare, die in einer Hierarchie > 
zueinander stehen, aber das ist für den Effekt unerheblich, ich habe > 
nur die Änderung des obersten Formulars (das ein > 
Tabellen-Kontrollelement für die zugehörige Tabelle enthält) > 
behandelt, die durch den Code die erneuerte Anzeige des obersten > 
Formulars des anderen Formulardokuments auslöste (was im Beispiel > 
wiederum ein formal identisches Tabellenkontrollelement ist). Das > 
Makro habe ich mit dem Ereignis "Nach der Datensatzaktion" des > 
obersten Formulars verknüpft. > > Sub RefreshSecondForm (evt as object) 
> > dim oDoc as object, oDBDoc as object, oSecondFormDoc as object, > 
mainForm as object > > oDoc = ThisComponent oDBDoc = oDoc.Parent 
oSecondFormDoc = > oDBDoc.FormDocuments.getByName("???1").open 
'activates form doc, if > already open mainForm = 
oSecondFormDoc.DrawPage.Forms.getByIndex(0) > 'or getByName("???2") 
mainForm.reload > > end sub > > Der Parent des Formular-Dokuments, in 
dem die Änderung passiert, ist > das Base-Dokument, das weitere 
Formular-Dokumente enthält, aus denen > wir dasjenige wählen, das wir 
aktualisieren wollen. Das Dok. wird > "geöffnet", was bei einem bereits 
geöffneten nur die Auswahl des > Objekts bedeutet. Dann können wir wie 
gewohnt das Fomular wählen - im > Code über den Index, weil es nur ein 
oberstes gibt. reload erneuert > die Anzeige. Da gibt es sicher noch ein 
paar Dinge zu überlegen, die > aber von der konkreten Struktur deiner 
beiden Formular-Dokumente > abhängen, die ich ja nicht kenne. 
Beispielsweise könnte bei einem > aufwändigeren Formular-Dokument die 
Änderung auch nur in einem > Unterformular passieren, dann müsste da 
beim gleichen Ereignis im > Unterformular ein ähnlicher Code aufgerufen 
werden, der aber dann > wohl ein anderes Formular im sekundären 
Formular-Dokument reloaden > müsste. Der Befehl reload beginnt mit der 
Anzeige wieder beim ersten > Satz, egal wie im sekundären 
Formular-Dokument gerollt war und wo der > Cursor stand. Man könnte, 
denke ich, das Formular auch wieder so > positionieren wie vor dem 
Reload, wenn man sich die Position merkt, > aber das habe ich nicht 
ausprobiert. Es könnte auch einen Unterschied > bedeuten, wenn das 
Formular im sekundären Formular-Dokument nur einen > einzelnen Satz 
anzeigt, da könnte das Repositionieren noch wichtiger > sein. Das wirst 
du sicher selber lösen können, du scheinst ja doch > einiges auf diesem 
Gebiet zu wissen. Übrigens: dein > > oDATEN = 
thisComponent.Drawpage.Forms.DATEN > > kann ja wohl kein echter Befehl 
sein, sondern nur exemplarisch > gemeint. DATEN gibt es unter ...Forms 
nicht, und wenn, müsste es ja > wohl eine einzelne Form sein, zu der es 
Daten gibt. > > Wenn du das Beispiel-Dokument haben willst, melde dich, 
ich schicke > es dir dann direkt, in der Liste kann man keine Anhänge 
verwenden. > > Gruß > > Gerhard > > Am 21.06.2017 um 13:44 schrieb 
Gerhard Dittrich: >> Vielen Dank, Gerhard für Deine Hinweise! >> >> Hast 
Du vielleicht ein Code-Schnipsel parat, so dass ich versuchen >> kann, 

Re: [de-users] Base: zwei Formulare sind geöffnet. Wie beide zugleich aktualisieren?

2017-06-21 Diskussionsfäden Gerhard Weydt

Hallo Gerhard,

Schnipsel sind insbesondere in Base nicht ganz einfach zu liefern, weil 
da doch die Daten- und Dokumentstruktur mit reinspielt.
Ich habe den folgenden Code an einem Beispiel, das ich sowieso hatte, 
ausprobiert. Das enthielt zwei nahezu identische Formular-Dokumente. Ich 
nenne so, um Missverständnisse zumindest zu erschweren, das, was man als 
"Formular" im Base-Dokument aufruft - in Übereinstimmung mit der 
Nomenklatur in UNO: FormDocuments - und was, je nach dem, was man dann 
definiert, sich auf viele Tabellen beziehen kann, im Gegensatz zum 
Formular innerhalb eines Formular-Dokuments, das genau auf eine Tabelle 
(Ansicht, Abfrage) bezogen ist. In diesem Sinn willst du ein zweites 
Formular-Dokument aktualisieren, wenn ein erstes verwaltet wird (was 
natürlich, wie in deinem Fall, nur sinnvoll ist, wenn es 
Überschneidungen in den angezeigten Tabellen gibt).
Meine zwei Formular-Dokumente haben mehrere Formulare, die in einer 
Hierarchie zueinander stehen, aber das ist für den Effekt unerheblich, 
ich habe nur die Änderung des obersten Formulars (das ein 
Tabellen-Kontrollelement für die zugehörige Tabelle enthält) behandelt, 
die durch den Code die erneuerte Anzeige des obersten Formulars des 
anderen Formulardokuments auslöste (was im Beispiel wiederum ein formal 
identisches Tabellenkontrollelement ist).
Das Makro habe ich mit dem Ereignis "Nach der Datensatzaktion" des 
obersten Formulars verknüpft.


Sub RefreshSecondForm (evt as object)

dim oDoc as object, oDBDoc as object, oSecondFormDoc as object, mainForm 
as object


oDoc = ThisComponent
oDBDoc = oDoc.Parent
oSecondFormDoc = oDBDoc.FormDocuments.getByName("???1").open
'activates form doc, if already open
mainForm = oSecondFormDoc.DrawPage.Forms.getByIndex(0)'or 
getByName("???2")

mainForm.reload

end sub

Der Parent des Formular-Dokuments, in dem die Änderung passiert, ist das 
Base-Dokument, das weitere Formular-Dokumente enthält, aus denen wir 
dasjenige wählen, das wir aktualisieren wollen. Das Dok. wird 
"geöffnet", was bei einem bereits geöffneten nur die Auswahl  des 
Objekts bedeutet. Dann können wir wie gewohnt das Fomular wählen - im 
Code über den Index, weil es nur ein oberstes gibt. reload erneuert die 
Anzeige.
Da gibt es sicher noch ein paar Dinge zu überlegen, die aber von der 
konkreten Struktur deiner beiden Formular-Dokumente abhängen, die ich ja 
nicht kenne. Beispielsweise könnte bei einem aufwändigeren 
Formular-Dokument die Änderung auch nur in einem Unterformular 
passieren, dann müsste da beim gleichen Ereignis im Unterformular ein 
ähnlicher Code aufgerufen werden, der aber dann wohl ein anderes 
Formular im sekundären Formular-Dokument reloaden müsste.
Der Befehl reload beginnt mit der Anzeige wieder beim ersten Satz, egal 
wie im sekundären Formular-Dokument gerollt war und wo der Cursor stand. 
Man könnte, denke ich, das Formular auch wieder so positionieren wie vor 
dem Reload, wenn man sich die Position merkt, aber das habe ich nicht 
ausprobiert.
Es könnte auch einen Unterschied bedeuten, wenn das Formular im 
sekundären Formular-Dokument nur einen einzelnen Satz anzeigt, da könnte 
das Repositionieren noch wichtiger sein.
Das wirst du sicher selber lösen können, du scheinst ja doch einiges auf 
diesem Gebiet zu wissen.

Übrigens: dein

   oDATEN = thisComponent.Drawpage.Forms.DATEN

kann ja wohl kein echter Befehl sein, sondern nur exemplarisch gemeint. 
DATEN gibt es unter ...Forms nicht, und wenn, müsste es ja wohl eine 
einzelne Form sein, zu der es Daten gibt.


Wenn du das Beispiel-Dokument haben willst, melde dich, ich schicke es 
dir dann direkt, in der Liste kann man keine Anhänge verwenden.


Gruß

Gerhard

Am 21.06.2017 um 13:44 schrieb Gerhard Dittrich:

Vielen Dank, Gerhard für Deine Hinweise!

Hast Du vielleicht ein Code-Schnipsel parat, so dass ich versuchen 
kann, den "Weg" anhand des Code-Schnipsels zu rekonstruieren?


Grüße
Gerhard



Am 21.06.2017 um 11:21 schrieb Gerhard Weydt:

Hallo Gerhard,

was ich vergessen habe: anschließend das Formulardokument mit 
getByName("xxx").open aktivieren, dann hast du den Zugriff.


Am 21.06.2017 um 10:36 schrieb Gerhard Weydt:

Hallo Gerhard,

über ThisComponent.Parent.FormDocuments kannst du auf die anderen 
Formulardokumente zugreifen.
Ich benutze immer Xray, um so etwas zu finden, und probiere einfach 
vielversprechende Eigenschaften und Methoden aus.


Gruß

Gerhard

Am 21.06.2017 um 09:02 schrieb Gerhard Dittrich:

Guten Morgen,

ich arbeite mit Base.

Zwei Formulare sind geöffnet. Diese beiden Formulare greifen auf 
den selben Datenbestand zu, nur anders dargestellt.


Ändere ich in dem einen (ERSTEN) Formular Daten, und klicke in der 
Menü-Leiste ich auf das andere (ZWEITE) bereits in der Anwendung 
geöffnete Formular, rückt es als aktives in den Vordergrund). Die 
Daten werden jedoch nicht aktualisiert dargestellt. (Ich müsste 
also zusätzlich einen AKTUALISIEREN-BUTTON im ZWEITEN Formular 
klicken).
Einf

Re: [de-users] Base: zwei Formulare sind geöffnet. Wie beide zugleich aktualisieren?

2017-06-21 Diskussionsfäden Gerhard Dittrich

Vielen Dank, Gerhard für Deine Hinweise!

Hast Du vielleicht ein Code-Schnipsel parat, so dass ich versuchen kann, 
den "Weg" anhand des Code-Schnipsels zu rekonstruieren?


Grüße
Gerhard



Am 21.06.2017 um 11:21 schrieb Gerhard Weydt:

Hallo Gerhard,

was ich vergessen habe: anschließend das Formulardokument mit 
getByName("xxx").open aktivieren, dann hast du den Zugriff.


Am 21.06.2017 um 10:36 schrieb Gerhard Weydt:

Hallo Gerhard,

über ThisComponent.Parent.FormDocuments kannst du auf die anderen 
Formulardokumente zugreifen.
Ich benutze immer Xray, um so etwas zu finden, und probiere einfach 
vielversprechende Eigenschaften und Methoden aus.


Gruß

Gerhard

Am 21.06.2017 um 09:02 schrieb Gerhard Dittrich:

Guten Morgen,

ich arbeite mit Base.

Zwei Formulare sind geöffnet. Diese beiden Formulare greifen auf den 
selben Datenbestand zu, nur anders dargestellt.


Ändere ich in dem einen (ERSTEN) Formular Daten, und klicke in der 
Menü-Leiste ich auf das andere (ZWEITE) bereits in der Anwendung 
geöffnete Formular, rückt es als aktives in den Vordergrund). Die 
Daten werden jedoch nicht aktualisiert dargestellt. (Ich müsste also 
zusätzlich einen AKTUALISIEREN-BUTTON im ZWEITEN Formular klicken).
Einfach wäre es, wenn ich im Rahmen der Datenmanipulation im ERSTEN 
Formular (diese läuft über ein Dialogfenster) zugleich per Makro 
anweisen könnte, dass das nicht aktive Formular ebenfalls 
aktualisiert wird.


Dazu müsste ich aber das NICHT-AKTIVE ZWEITE Formular ansteuern können.

Ich kenne aber nur den Befehl "thisComponent". Dieser führt 
natürlich nur auf das aktive ERSTE Formular.


Bei mir zum Beispiel:oDATEN = thisComponent.Drawpage.Forms.DATEN

Natürlich könnte ich das ZWEITE Formular per Makro schließen lassen 
und dann wieder öffnen. Dann würde das ZWEITE Formular automatisch 
aktualisiert. Diesen Weg möchte ich aber nicht beschreiten.



Grüße
Gerhard Dittrich










--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert


Re: [de-users] Base zwei Formulare sind geöffnet. Wie beide zugleich aktualisieren?

2017-06-21 Diskussionsfäden Gerhard Weydt

Hallo Gerhard,

was ich vergessen habe: anschließend das Formulardokument mit 
getByName("xxx").open aktivieren, dann hast du den Zugriff.


Am 21.06.2017 um 10:36 schrieb Gerhard Weydt:

Hallo Gerhard,

über ThisComponent.Parent.FormDocuments kannst du auf die anderen 
Formulardokumente zugreifen.
Ich benutze immer Xray, um so etwas zu finden, und probiere einfach 
vielversprechende Eigenschaften und Methoden aus.


Gruß

Gerhard

Am 21.06.2017 um 09:02 schrieb Gerhard Dittrich:

Guten Morgen,

ich arbeite mit Base.

Zwei Formulare sind geöffnet. Diese beiden Formulare greifen auf den 
selben Datenbestand zu, nur anders dargestellt.


Ändere ich in dem einen (ERSTEN) Formular Daten, und klicke in der 
Menü-Leiste ich auf das andere (ZWEITE) bereits in der Anwendung 
geöffnete Formular, rückt es als aktives in den Vordergrund). Die 
Daten werden jedoch nicht aktualisiert dargestellt. (Ich müsste also 
zusätzlich einen AKTUALISIEREN-BUTTON im ZWEITEN Formular klicken).
Einfach wäre es, wenn ich im Rahmen der Datenmanipulation im ERSTEN 
Formular (diese läuft über ein Dialogfenster) zugleich per Makro 
anweisen könnte, dass das nicht aktive Formular ebenfalls 
aktualisiert wird.


Dazu müsste ich aber das NICHT-AKTIVE ZWEITE Formular ansteuern können.

Ich kenne aber nur den Befehl "thisComponent". Dieser führt natürlich 
nur auf das aktive ERSTE Formular.


Bei mir zum Beispiel:oDATEN = thisComponent.Drawpage.Forms.DATEN

Natürlich könnte ich das ZWEITE Formular per Makro schließen lassen 
und dann wieder öffnen. Dann würde das ZWEITE Formular automatisch 
aktualisiert. Diesen Weg möchte ich aber nicht beschreiten.



Grüße
Gerhard Dittrich







--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert


Re: [de-users] Base zwei Formulare sind geöffnet. Wie beide zugleich aktualisieren?

2017-06-21 Diskussionsfäden Gerhard Weydt

Hallo Gerhard,

über ThisComponent.Parent.FormDocuments kannst du auf die anderen 
Formulardokumente zugreifen.
Ich benutze immer Xray, um so etwas zu finden, und probiere einfach 
vielversprechende Eigenschaften und Methoden aus.


Gruß

Gerhard

Am 21.06.2017 um 09:02 schrieb Gerhard Dittrich:

Guten Morgen,

ich arbeite mit Base.

Zwei Formulare sind geöffnet. Diese beiden Formulare greifen auf den 
selben Datenbestand zu, nur anders dargestellt.


Ändere ich in dem einen (ERSTEN) Formular Daten, und klicke in der 
Menü-Leiste ich auf das andere (ZWEITE) bereits in der Anwendung 
geöffnete Formular, rückt es als aktives in den Vordergrund). Die 
Daten werden jedoch nicht aktualisiert dargestellt. (Ich müsste also 
zusätzlich einen AKTUALISIEREN-BUTTON im ZWEITEN Formular klicken).
Einfach wäre es, wenn ich im Rahmen der Datenmanipulation im ERSTEN 
Formular (diese läuft über ein Dialogfenster) zugleich per Makro 
anweisen könnte, dass das nicht aktive Formular ebenfalls aktualisiert 
wird.


Dazu müsste ich aber das NICHT-AKTIVE ZWEITE Formular ansteuern können.

Ich kenne aber nur den Befehl "thisComponent". Dieser führt natürlich 
nur auf das aktive ERSTE Formular.


Bei mir zum Beispiel:oDATEN = thisComponent.Drawpage.Forms.DATEN

Natürlich könnte ich das ZWEITE Formular per Makro schließen lassen 
und dann wieder öffnen. Dann würde das ZWEITE Formular automatisch 
aktualisiert. Diesen Weg möchte ich aber nicht beschreiten.



Grüße
Gerhard Dittrich




--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert


[de-users] Base zwei Formulare sind geöffnet. Wie beide zugleich aktualisieren?

2017-06-21 Diskussionsfäden Gerhard Dittrich

Guten Morgen,

ich arbeite mit Base.

Zwei Formulare sind geöffnet. Diese beiden Formulare greifen auf den 
selben Datenbestand zu, nur anders dargestellt.


Ändere ich in dem einen (ERSTEN) Formular Daten, und klicke in der 
Menü-Leiste ich auf das andere (ZWEITE) bereits in der Anwendung 
geöffnete Formular, rückt es als aktives in den Vordergrund). Die Daten 
werden jedoch nicht aktualisiert dargestellt. (Ich müsste also 
zusätzlich einen AKTUALISIEREN-BUTTON im ZWEITEN Formular klicken).
Einfach wäre es, wenn ich im Rahmen der Datenmanipulation im ERSTEN 
Formular (diese läuft über ein Dialogfenster) zugleich per Makro 
anweisen könnte, dass das nicht aktive Formular ebenfalls aktualisiert wird.


Dazu müsste ich aber das NICHT-AKTIVE ZWEITE Formular ansteuern können.

Ich kenne aber nur den Befehl "thisComponent". Dieser führt natürlich 
nur auf das aktive ERSTE Formular.


Bei mir zum Beispiel:oDATEN = thisComponent.Drawpage.Forms.DATEN

Natürlich könnte ich das ZWEITE Formular per Makro schließen lassen und 
dann wieder öffnen. Dann würde das ZWEITE Formular automatisch 
aktualisiert. Diesen Weg möchte ich aber nicht beschreiten.



Grüße
Gerhard Dittrich

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert