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 - Anwendung beenden

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Kpfeiler
Beiträge: 8
Registriert: Fr 11. Nov 2016, 11:09

Makro - Anwendung beenden

Beitrag von Kpfeiler » Di 27. Dez 2016, 18:36

Hallo

Ich möchte bei meiner Datenbank beim Schließen des Hauptformulars die Anwendung komplett beenden, bei MS Access geht das wunderbar, aber hier komme ich nicht weiter.
Kann jemand helfen?

Vielen Dank
Klaus - Peter

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

Re: Makro - Anwendung beenden

Beitrag von RobertG » Di 27. Dez 2016, 19:33

Hallo Klaus-Peter,

so etwas müsstest Du dann natürlich als Makro an das Schließen des Formulars binden. Vielleicht funktioniert das folgende Schnipsel:

Code: Alles auswählen

SUB DatenbankSchliessen
ThisDatabaseDocument.close(True)
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

Kpfeiler
Beiträge: 8
Registriert: Fr 11. Nov 2016, 11:09

Re: Makro - Anwendung beenden

Beitrag von Kpfeiler » Fr 30. Dez 2016, 17:00

Hallo Robert
Funktioniert wunderbar, viel Dank.

Ich wünsche einen Guten Rutsch und ein gutes Jahr 2017.

Viele Grüße
Klaus - Peter

Pensionär
Beiträge: 30
Registriert: So 20. Jun 2021, 11:52

Re: Makro - Anwendung beenden

Beitrag von Pensionär » Mo 3. Jan 2022, 18:56

Guten Abend Robert

Wieder einmal ich :D
Ich hoffe Du bist gut ins neue Jahr gerutscht, ich wünsche Dir alles Gute für das 2022.

Du hattest Klaus - Peter einmal diesen Makro erstellt, diesen habe ich auch von hier kopiert und wende ihn an.
Mir ist nun aufgefallen, dass er zwar das entsprechende Dokument(in diesem Fall die Datenbank) schliesst.
Im Hintergrund bleibt allerdings LibreOffice weiterhin geöffnet, was bei mir oft zu Störungen führt, wenn ich die Datenbank wieder öffnen will.
Gäbe es einen erweiterten Makro, welcher auch LibreOffice beendet?

Vielen Dank für Deine Hilfe.

Ich wünsche Dir einen schönen Abend.

Herzliche Grüsse
Markus

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

Re: Makro - Anwendung beenden

Beitrag von RobertG » Di 4. Jan 2022, 08:29

Hallo Markus,

ich kann das hier nicht nachvollziehen. Wenn ich das Makro einsetze verschwindet bei einer geöffneten Datenbankdatei diese so schnell vom Schirm, dass das für LO wie ein Absturz aussieht. Ich habe da nichts mehr im Speicher von LO. Mich macht da eher die Absturzmeldung skeptisch.

Natürlich geht das auch für den gesamten Desktop mit ThisComponent statt ThisDatabaseDocument. Aber dazu müsstest Du aus dem Formular erst raus.

Vielleicht hast Du noch irgendwelche anderen Prozesse in LO gestartet. Die müssten sich bei (True) allerdings melden. Bei (False) hingegen werden die einfach geschlossen.

Ich nutze dieses Makro nicht. Wenn ich mit dem Schließen eines Formulars gleichzeitig LO schließen möchte, dann baue ich mir externe Formulare.

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

Pensionär
Beiträge: 30
Registriert: So 20. Jun 2021, 11:52

Re: Makro - Anwendung beenden

Beitrag von Pensionär » Di 4. Jan 2022, 11:00

Hallo Robert

Vielen Dank für Deine Antwort.

Habe es noch versucht mit dem Makro und ThisComponent, aber das Fenster LO wird nicht geschlossen, es bleibt das Startfenster von LO in der Startleiste. Wenn ich dann später die Datenbank wieder öffnen möchte, dann stürzt LO ab und es kommt die Meldung ob ich erneut öffnen möchte. Wenn ich LO aber in der Startleiste beende, dann kann ich die Datenbank normal wieder öffnen.

Na ja, ich weiss ja nun, woher dieser Fehler kommt und schliesse LO noch separat.

Ich wünsche Dir einen erfolgreichen Tag.

Beste Grüsse
Markus

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

Re: Makro - Anwendung beenden

Beitrag von RobertG » Di 4. Jan 2022, 15:21

Hallo Markus,

ich habe noch ein bisschen probiert und etwas abgewandelt, was an anderer Stelle der Makrorecorder erledigte:

Code: Alles auswählen

SUB Schliessen
	DIM document   AS OBJECT
	DIM dispatcher AS OBJECT
	document   = ThisDatabaseDocument.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "Type"
	args1(0).Value = 1
	dispatcher.executeDispatch(document, ".uno:CloseFrame", "", 0, args1())
END SUB
Damit schließe ich ebenso die Datenbank. Im Gegensatz zum direkten Weg regst sich meine Benutzeroberfläche hier aber nicht auf und vermeldet so keinen Absturz.

Dass da irgendein Rest stehen bleibt kann ich bei beiden Varianten nicht sehen. Das wirkt genau so wie
Datei → LibreOffice beenden
aus dem Formular heraus. Alle Fenster werden geschlossen.

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

Pensionär
Beiträge: 30
Registriert: So 20. Jun 2021, 11:52

Re: Makro - Anwendung beenden

Beitrag von Pensionär » Do 6. Jan 2022, 21:40

Guten Abend Robert

Vielen Dank für Deine Hilfe, habe gestern noch geantwortet, aber vermutlich nicht gesendet.

Ich habe Deinen Makro hinterlegt und auch einzeln gestartet, es ist aber der gleiche Effekt, LO bleibt in der Kopfmenüleiste angezeigt und schliesst sich nur wenn ich es dann über LO schliessen mache.
Ich hatte allerdings auch keine Fehlermeldung beim alten Makro, so wie es bei Dir aufgetreten ist.
Einfach nur, wenn ich die Datenbank in der gleichen Sitzung nochmals starte und LO im Hintergrund noch aktiv ist, dann stürzt LO ab.

Eventuell hängt das mit dem Betriebssystem zusammen (macOS Monterey).

Aber eigentlich hast Du recht, warum nicht über LO beenden, macht eigentlich Sinn, manchmal sucht man einfach nach spielerischen Lösungen.

Beste Grüss
Markus

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Makro - Anwendung beenden

Beitrag von gogo » Fr 7. Jan 2022, 14:02

2 Dinge:

1. Wir haben gute Erfahrungen, wenn die Datenbank von einem Makro AUßERHALB der Datenbank geschlossen wird
2. Oft gelten Datenbanken als modifiziert, daher vor dem Beenden diesen Status abfragen, oder ein .setModified(false) VOR dem .close(true) ausführen, das verhindert, dass sich die Datenbank sich beim nächsten Start beschwert ...

Speichere also die SUB Schliessen unter [Meine Makros & Dialoge].Standard.Module1.Schliessen und ruf' dieses Makro dann aus der DB heraus auf: Button ... Aktion ausführen ... >> Meine Makros..Standard.Module1.Schliessen
Das Datenbank-Objekt erreichst Du über das Event, das mit der "Aktion ausführen"-Aktion automatisch mitgegben wird. Deine Sub sollte also als "sub Schliessen(oEvent)" begonnen werden:

Code: Alles auswählen

sub Datenbank_schliessen(oEvent)
	if oEvent.Source.SupportsService("com.sun.star.form.control.CommandButton") then
		DatenBank = oEvent.Source.Model.Parent.Parent.Parent.Parent
		DatenBank.setModified(false)
		DatenBank.close(true)
	else
		msgbox "Hilfe! Ich bin gar kein Button ;((("
	end if
end sub
Die Abfrage, ob die Datenbank verändert wurde, könntest Du auch einach so in Zeile 4 einbauen:

Code: Alles auswählen

...
if DatenBank.isModified then DatenBank.setModified(false)
...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Pensionär
Beiträge: 30
Registriert: So 20. Jun 2021, 11:52

Re: Makro - Anwendung beenden

Beitrag von Pensionär » Fr 7. Jan 2022, 16:00

Hallo Robert

Wow, vielen Dank.

Die gute Nachricht, es gibt weniger Abstürze beim erneuten Starten.
Ich muss dazu sagen, dass ich nie eine Fehlermeldung erhalten habe beim Absturz.
Wenn LO noch im Hintergrund aktiv ist, dann blinkt die Datenbank kurz auf, schliesst sich wieder und dann ist auch LO weg. Beim nächsten Start ist dann alles wieder OK und die Datenbank öffnet sich korrekt.

Habe alle Anweisungen von Dir ausgeführt und auch die Zeile "if DatenBank.isModified then DatenBank.setModified(false)" getestet.
LO bleibt aber immer aktiv nach dem schliessen der DB, ich meine damit das Fenster von LO, aus dem man Dateien öffnet, oder eine Anwendung startet (Calc, Base usw.).

Aber wie gesagt, ich schliesse dann das Fenster noch separat über LO beenden, das ist gar kein Problem.

Nochmals vielen Dank.

Wünsche Dir einen schönen Abend.

Herzliche Grüsse
Markus

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