BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> 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
Makro - Anwendung beenden
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
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
Re: Makro - Anwendung beenden
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:
Gruß
Robert
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
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Makro - Anwendung beenden
Hallo Robert
Funktioniert wunderbar, viel Dank.
Ich wünsche einen Guten Rutsch und ein gutes Jahr 2017.
Viele Grüße
Klaus - Peter
Funktioniert wunderbar, viel Dank.
Ich wünsche einen Guten Rutsch und ein gutes Jahr 2017.
Viele Grüße
Klaus - Peter
Re: Makro - Anwendung beenden
Guten Abend Robert
Wieder einmal ich
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
Wieder einmal ich
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
Re: Makro - Anwendung beenden
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
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Makro - Anwendung beenden
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
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
Re: Makro - Anwendung beenden
Hallo Markus,
ich habe noch ein bisschen probiert und etwas abgewandelt, was an anderer Stelle der Makrorecorder erledigte:
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
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
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Makro - Anwendung beenden
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
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
Re: Makro - Anwendung beenden
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:
Die Abfrage, ob die Datenbank verändert wurde, könntest Du auch einach so in Zeile 4 einbauen:
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
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
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
Re: Makro - Anwendung beenden
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
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 ❤️