BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro wird scheinbar nicht vollständig ausgeführt

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Sven J.
Beiträge: 4
Registriert: Do 10. Sep 2020, 09:22

Makro wird scheinbar nicht vollständig ausgeführt

Beitrag von Sven J. » Do 10. Sep 2020, 11:38

Guten Tag zusammen.
Als relativer Neuling in Sachen Datenbanken (vo ca. 10 Jahren etwas Access für Weiterbildung) habe ich mich an den offiziellen Handbüchern mit einer eigenen DB entlang gehangelt um wieder rein zu kommen.
Jetzt hake ich beim aktualisieren eines Unterformulars nach der Auswahl des übergeordneten Datensatzes per Listenfeld.
Im Formularhandbuch wird das Unterformular über einen Button mit "Aktion - Formular aktualisieren" mit den entsprechenden Daten gefüllt.
Jetzt zur Frage: Ich möchte dies nicht durch den Button realisieren, so das ich mir folgendes Makro geschrieben habe das bei "Ereignisse - Modifiziert" des Listenfeldes ausgeführt wird.

Code: Alles auswählen

Sub aktualisieren
Dim oDoc AS OBJECT
Dim oDrawpage AS OBJECT
Dim oForm, oSubForm AS OBJECT

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("frmFilter_Objekt")
oSubForm = oForm.getByName("sfrmRaeume")
oSubForm.Reload

End Sub

Das Makro funktioniert Grundsätzlich, aktualisieren findet aber nicht statt. Wenn ich das Makro aber an den Button unter "Ereignisse - Aktion ausführen" anhänge, funktioniert das aktualisieren (Aktion unter "Allgemein" ist natürlich auf "Keine" gesetzt)

Das Listenfeld gehört zum Hauptformular (frmFilter_Objekt). der Button zum Unterformular (sfrmRaeume).
Habe ich da evtl. etwas mit der Hierarchie der Formulare nicht beachtet?


Danke für euer Feedback.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro wird scheinbar nicht vollständig ausgeführt

Beitrag von RobertG » Do 10. Sep 2020, 15:55

Hallo Sven,

die Anwendungen im Handbuch nutzen den Aktualisierungsbutton für 2 Zwecke: Zuerst wird über das Verlassen des Filterformulars der Filterwert gespeichert. Das geschieht durch den Klick auf einen Button in einem anderen Formular. Dann erst aktualisiert dieser Button das Formular, in dem erliegt.

Wenn in dem Listenfeld etwas ausgewählt wird und dies den Inhalt des Unterformulars beeinflussen soll, so muss der Inhalt des Listenfeldes zuerst gespeichert werden. Vermutlich in Deinem Makro durch

Code: Alles auswählen

oForm.UpdateRow
bevor das Unterformular mit der letzten Zeile des Makros aktualisiert wird.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Sven J.
Beiträge: 4
Registriert: Do 10. Sep 2020, 09:22

Re: Makro wird scheinbar nicht vollständig ausgeführt

Beitrag von Sven J. » Fr 11. Sep 2020, 10:51

Hallo Robert,
danke für den Hinweis. Leider hat sich am Verhalten des Makros damit nichts geändert. Beim probieren wird es sogar noch rätselhafter:
Aufruf über Listenfeld - mit Ereignis "modifiziert" oder "Aktion ausführen" wird das Unterformular NICHT aktualisiert.

Wenn ich das selbe Makro aber über das Ereignis "bei Fokusverlust" ausführe, wird das Unterformular aktualisiert. Aber auch nur, wenn ich ein anderes Steuerelemt ansteuere. Wenn ich auf das Formular klicke, geschieht wiederum nichts.

Ich habe die Datei mal angehängt.

Gruß Sven
Muster.zip
(19.19 KiB) 96-mal heruntergeladen

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makro wird scheinbar nicht vollständig ausgeführt

Beitrag von RobertG » Fr 11. Sep 2020, 17:11

Hallo Sven,

die angehängte Datei kann ich zwar bearbeiten. Sobald ich aber ein Formular öffne und bearbeite kann ich nicht erneut darauf zugreifen. Da wäre es für mich schon einmal wichtig, mit welcher Version Du das erstellt hast. Die ersten Vorversionen von LO 7 hatten da einen Bug, der bei der Formularbearbeitung älterer Versionen so etwas ähnliches produzierte.

Versuche einmal folgendes:

Code: Alles auswählen

oField = oForm.getByName("lstObjekte")
oField.BoundField.UpdateLong(oField.currentValue)
oForm.updateRow
oForm.Reload
... und binde das Makro an das Ereignis "modifiziert". Es scheint so, dass allein mit dem Klick auf ein Listenfeld nicht der Wert bereits in die Tabelle geschrieben wird. Das ist auch daran zu sehen, dass mit updateRow ohne den Zugriff auf das Feld nichts in der Tabelle geändert wird.

Den direkten Zugriff bekommst Du übrigens so:

Code: Alles auswählen

SUB Aktualisieren(oEvent AS OBJECT)
	DIM oField AS OBJECT
	DIM oForm AS OBJECT
	oField = oEvent.Source.Model
	oField.BoundField.UpdateLong(oField.currentValue)
	oForm = oField.Parent
	oForm.updateRow
	oForm.Reload
END SUB
Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Sven J.
Beiträge: 4
Registriert: Do 10. Sep 2020, 09:22

Re: Makro wird scheinbar nicht vollständig ausgeführt

Beitrag von Sven J. » Mo 14. Sep 2020, 08:30

Hallo Robert,
so fängt eine Woche doch gut an :D!
Es läuft jetzt, auch mit dem direkten Zugriff.

Die DB habe ich mit 7.0.0.3 (Portable, aber das sollte ja keinen Unterschied machen) erstellt.

Schöne Woche noch!

Sven

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten