🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Fokusprobleme
Fokusprobleme
Moin aus dem Norden,
zwei Probleme lassen mich mal wieder um Eure Hilfe bitten.
In meiner Datenbank habe ich ein Formular Statistiken.
Dort rufe ich über Button einen Bericht Behandlungen für einen bestimmten Zeitraum auf.
Der Bericht basiert auf einer Parameterabfrage , die den anzuzeigenden Zeitraum abfragt und dann auch im Bericht korrekt anzeigt.
Schliesse ich den Bericht lande ich allerdings in der Arbeitsumgebung von Base. Hier würde ich gern wieder im StatistikFormular landen. Möglicherweise funktioniert das über einen Button im Bericht ?!aber vielleicht gibt es da auch eine elegantere Lösung, die den Fokus wieder auf das aufrufende Formular setzt.
Das zweite Problem ist, ich möchte eigentlich grundsätzlich vermeiden, dass meine Tochter in der Arbeitsumgebung von Base landet. Deshalb würde ich beim Beenden der . odb gern die komplette Anwendung(Base) per Button schliessen.
Kann mir da jemand einen Ansatz liefern ?
Gruß Emandu
zwei Probleme lassen mich mal wieder um Eure Hilfe bitten.
In meiner Datenbank habe ich ein Formular Statistiken.
Dort rufe ich über Button einen Bericht Behandlungen für einen bestimmten Zeitraum auf.
Der Bericht basiert auf einer Parameterabfrage , die den anzuzeigenden Zeitraum abfragt und dann auch im Bericht korrekt anzeigt.
Schliesse ich den Bericht lande ich allerdings in der Arbeitsumgebung von Base. Hier würde ich gern wieder im StatistikFormular landen. Möglicherweise funktioniert das über einen Button im Bericht ?!aber vielleicht gibt es da auch eine elegantere Lösung, die den Fokus wieder auf das aufrufende Formular setzt.
Das zweite Problem ist, ich möchte eigentlich grundsätzlich vermeiden, dass meine Tochter in der Arbeitsumgebung von Base landet. Deshalb würde ich beim Beenden der . odb gern die komplette Anwendung(Base) per Button schliessen.
Kann mir da jemand einen Ansatz liefern ?
Gruß Emandu
Re: Fokusprobleme
Wenn Du den Bericht auf hast: Ist dann das Formulardokument weiter offen? Ich habe das hier gerade ausprobiert und komme beim Schließen des Berichts direkt wieder zum Formular zurück.
Hier: OpenSUSE 15.6 mit LO Version: 25.2.3.2 (X86_64) / LibreOffice Community
Build ID: bbb074479178df812d175f709636b368952c2ce3
CPU threads: 6; OS: Linux 6.4; UI render: default; VCL: kf5 (cairo+xcb)
Locale: de-DE (de_DE.UTF-8); UI: de-DE
Calc: threaded
Zum Schließen von Base: Ich hatte das auch in einer Datenbank versucht, die als XRechnungs-Datenbank von vielen Leuten benutzt wird. Abhängig vom System konnte es passieren, dass LibreOffice hing. Das Makro steht noch in der XRechnungs-Datenbank drin. Siehe: https://www.familiegrosskopf.de/robert/ - dort rechts bei den Bearbeitungsversionen nach XRechnung_V2502_….odb (nicht nach der MariaDB-Variante) suchen. Das Schließmakro ist in "Backup" → "DatabaseClose1". Da kannst Du auch sehen, was ich alles ausprobiert habe. Wenn es bei Linux hier funktionierte funktionierte es anschließend bei Windows nicht …
Hier: OpenSUSE 15.6 mit LO Version: 25.2.3.2 (X86_64) / LibreOffice Community
Build ID: bbb074479178df812d175f709636b368952c2ce3
CPU threads: 6; OS: Linux 6.4; UI render: default; VCL: kf5 (cairo+xcb)
Locale: de-DE (de_DE.UTF-8); UI: de-DE
Calc: threaded
Zum Schließen von Base: Ich hatte das auch in einer Datenbank versucht, die als XRechnungs-Datenbank von vielen Leuten benutzt wird. Abhängig vom System konnte es passieren, dass LibreOffice hing. Das Makro steht noch in der XRechnungs-Datenbank drin. Siehe: https://www.familiegrosskopf.de/robert/ - dort rechts bei den Bearbeitungsversionen nach XRechnung_V2502_….odb (nicht nach der MariaDB-Variante) suchen. Das Schließmakro ist in "Backup" → "DatabaseClose1". Da kannst Du auch sehen, was ich alles ausprobiert habe. Wenn es bei Linux hier funktionierte funktionierte es anschließend bei Windows nicht …
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: Fokusprobleme
Ich habe das jetzt mal geprüft.
Startformular -> Aufruf frmStatistiken -> beide Formulare bleiben geöffnet , mit korrektem Fokus auf frmStatistiken
Aufruf Bericht -> Parameter werden abgefragt, während der Parametereingabe legt sich bereits die Arbeitsumgebung über die beiden Formulare (könnte hier das Problem liegen und ich sollte versuchen die Parametereingabe ins Formular einzubetten ?? )-> Bericht ist offen, Formulare sind weiterhin geöffnet. Beim Schliessen des Berichts geht der Fokus zurück auf die Arbeitsumgebung-> Formulare sind weiterhin geöffnet.
Hier:
Windows 10 Home , LO Version 24.8.6.2
Build: 6d98ba145e9a8a39fc57bcc76981d1fb1316c60c
CPU Threads:12
BS:Windows 10 X86_64 (10.0. build 19045)
UI-Render: Skia/Raster;VCL: win
Gebietsschema: de-DE(de_DE); UI:de-DE
Calc: CL threaded
Das von dir entwickelte Makro DatabaseClose habe ich erst einmal auf die Schnelle auf einen Button gelegt.
Keine Fehlermeldung aber es wird auch keine offensichtliche Aktion ausgelöst.
Da schau ich aber ganz in Ruhe noch einmal drauf und versuche es nachzuvollziehen.
Gruß Emandu
Re: Fokusprobleme
Hallo Emandu,
vermutlich wird das Ganze an der Parametereingabe liegen. Mit so etwas arbeite ich grundsätzlich nicht. Ich habe die Filtervorgaben immer in einer Filtertabelle liegen.
Das Makro zum Schließen ist so auch nicht direkt nutzbar, weil alle Möglichkeiten zum Schließen auskommentiert sind:
ist die erste Möglichkeit
zeigt gleich 3 Möglichkeiten.
Nur wenn neben Base eine andere Anwendung (Calc, Writer usw.) offen ist, dann funktioniert das Schließen der Base-Datei über
Achtung: Da wird auch eine andere Funktion aufgerufen, die Du vermutlich nicht benötigst: DataWrite. Das war bei Firebird notwendig, da die Abspeicherung nicht automatisch funktionierte. In der aktuellen LO-Version ist das jetzt behoben.
vermutlich wird das Ganze an der Parametereingabe liegen. Mit so etwas arbeite ich grundsätzlich nicht. Ich habe die Filtervorgaben immer in einer Filtertabelle liegen.
Das Makro zum Schließen ist so auch nicht direkt nutzbar, weil alle Möglichkeiten zum Schließen auskommentiert sind:
Code: Alles auswählen
StarDesktop.terminate()
Code: Alles auswählen
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
REM .uno:CloseWin, .uno:CloseDoc, .uno:Quit
oDispatcher.executeDispatch(oDoc.CurrentController.Frame, ".uno:Quit", "", 0, Array())
Nur wenn neben Base eine andere Anwendung (Calc, Writer usw.) offen ist, dann funktioniert das Schließen der Base-Datei über
Code: Alles auswählen
oDoc.Close(True)
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: Fokusprobleme
Moin aus dem Norden
Mein Ansatz:
Ich hatte bis dato Abfragen erstellt, die mir je nach Kriterium (Behandlungen gesamt , Behandlungen Familienhunde..je nach Zustand eines Markierfelds im Formular )den gewünschten Zeitraum anzeigen.
Ich habe jetzt im Formular zwei Datumsfelder eingefügt , die die Werte direkt in die Filtertabelle (Startdatum, Enddatum)schreiben. Das funktioniert.
Im Entwurf der existierenden Abfragen habe ich die Filtertabelle hinzugefügt. Jetzt wird mir beim Ausführen der Abfragen natürlich in jedem Datensatz der Inhalt der Filtertabelle angefügt.
Die bisherige Argumentabfrage ( >=:Startdatum und <=:Enddatum) habe ich rausgenommen.
Jetzt habe ich mal wieder einen Knoten im Kopf....
Kann ich das überhaupt in der Entwurfsansicht der Abfrage regeln , dass die beiden Filtertabellenwerte direkt greifen?
Kann ich ...und wenn ja wie (korrekte Syntax) ( >=:Startdatum und <=:Enddatum)als Kriterium ersetzen durch (>=tblFilter.Startdatum und <=tblFilter.Enddatum )?
Falls das nicht geht würde ich das gern in der SQL Anweisung als AND Bedingung formulieren.....
Da ich den Ansatz nach "Herumprobieren"vielleicht als falsch verwerfe , obwohl es sich dann "nur" um ein Syntaxproblem handelt, bitte ich um Eure Meinung. Bin ich hier auf dem Holzweg und sollte vielleicht einen ganz anderen Ansatz , und wenn ja welchen, wählen ?
Gruß Emandu
das ist natürlich viel eleganter und ich würde das gern auch so umsetzen.
Mein Ansatz:
Ich hatte bis dato Abfragen erstellt, die mir je nach Kriterium (Behandlungen gesamt , Behandlungen Familienhunde..je nach Zustand eines Markierfelds im Formular )den gewünschten Zeitraum anzeigen.
Ich habe jetzt im Formular zwei Datumsfelder eingefügt , die die Werte direkt in die Filtertabelle (Startdatum, Enddatum)schreiben. Das funktioniert.
Im Entwurf der existierenden Abfragen habe ich die Filtertabelle hinzugefügt. Jetzt wird mir beim Ausführen der Abfragen natürlich in jedem Datensatz der Inhalt der Filtertabelle angefügt.
Die bisherige Argumentabfrage ( >=:Startdatum und <=:Enddatum) habe ich rausgenommen.
Jetzt habe ich mal wieder einen Knoten im Kopf....
Kann ich das überhaupt in der Entwurfsansicht der Abfrage regeln , dass die beiden Filtertabellenwerte direkt greifen?
Kann ich ...und wenn ja wie (korrekte Syntax) ( >=:Startdatum und <=:Enddatum)als Kriterium ersetzen durch (>=tblFilter.Startdatum und <=tblFilter.Enddatum )?
Falls das nicht geht würde ich das gern in der SQL Anweisung als AND Bedingung formulieren.....
Da ich den Ansatz nach "Herumprobieren"vielleicht als falsch verwerfe , obwohl es sich dann "nur" um ein Syntaxproblem handelt, bitte ich um Eure Meinung. Bin ich hier auf dem Holzweg und sollte vielleicht einen ganz anderen Ansatz , und wenn ja welchen, wählen ?
Gruß Emandu
Re: Fokusprobleme
Die Filtertabelle besteht grundsätzlich für Dich nur aus einem Datensatz. Da ich häufig auch Serverdatenbanken zusammenstelle ermittle ich den Datensatz über die VerbindungsID. Wenn jetzt also "viw_Filter" hier auftaucht, dann ist das der eine für Dich gültige Datensatz aus der Filtertabelle.
Vermutlich willst Du, dass das Ganze auch eine entsprechende Anzeige liefert, wenn der Eintrag "StartDatum" leer ist:
So erscheinen alle Daten, wenn Du keinen Eintrag in "StartDatum" stehen hast.
Die Filtertabelle wird da meist über eine Unterabfrage hinzugefügt. So bleibt der Rest der Abfrage auch in Formularen für eine Datenänderung offen.
Die "viw_Filter" erzeuge ich über den folgenden Code:
(hier: Firebird)
Dazu muss aber zuerst beim Start der Datenbank ein Makro ablaufen, das einen Datensatz in "tbl_Filter" schreibt, der als Primärschlüssel die CURRENT_CONNECTION hat.
Du kannst auch schlicht bei "tbl_Filter" den Primärschlüssel mit einem Ja/Nein-Feld erstellen. Ausgewählt ist dann der Filter-Datensatz, den Du nutzt. Dann kannst Du in dem Code oben statt "viw_Filter" "tbl_Filter" eintragen - vorausgesetzt eben, Du hast nur einen Datensatz da drin.
Code: Alles auswählen
SELECT * FROM "MyTable"
WHERE "StartDat" >= (SELECT "StartDatum" FROM "viw_Filter")
Code: Alles auswählen
SELECT * FROM "MyTable"
WHERE "StartDat" >= COALESCE((SELECT "StartDatum" FROM "viw_Filter"), "StartDat")
Die Filtertabelle wird da meist über eine Unterabfrage hinzugefügt. So bleibt der Rest der Abfrage auch in Formularen für eine Datenänderung offen.
Die "viw_Filter" erzeuge ich über den folgenden Code:
Code: Alles auswählen
SELECT "tbl_Filter".*
FROM "tbl_Filter"
WHERE "ID" = CURRENT_CONNECTION
Dazu muss aber zuerst beim Start der Datenbank ein Makro ablaufen, das einen Datensatz in "tbl_Filter" schreibt, der als Primärschlüssel die CURRENT_CONNECTION hat.
Du kannst auch schlicht bei "tbl_Filter" den Primärschlüssel mit einem Ja/Nein-Feld erstellen. Ausgewählt ist dann der Filter-Datensatz, den Du nutzt. Dann kannst Du in dem Code oben statt "viw_Filter" "tbl_Filter" eintragen - vorausgesetzt eben, Du hast nur einen Datensatz da drin.
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: Fokusprobleme
Vielen Dank für Deine Nachricht.
Bevor ich die von dir vorgeschlagene Variante ausprobiere , habe ich noch mit meinen vorhandenen Abfragen getestet....
Hier wird der Filterwert geschrieben... und hier habe ich die Argumente ( >=:Startdatum und <=:Enddatum)ersetzt durch die Filterwerte. (Wobei die Beziehungen nicht mehr korrekt im Abfrageentwurf angezeigt werden....) Weil ich direkt im SQL-Code Änderungen vorgenommen habe oder was kann da die Ursache sein ?
Der Nachteil gegenüber Deiner Variante ist sicher die drei im Vorfeld zu erstellenden Abfragen und damit die Performance
Hier schliesst sich noch eine Frage an.
Die Filtertabelle verwende ich ja an verschiedenen Stellen.
Aus der Erfahrung heraus...ist es ratsam eine Filtertabelle mit vielen Filterargumenten aufzustellen (es könnten noch mehr dazukommen) oder dann lieber eine zweite Filtertabelle einzufügen.
Ich wüsste jetzt auf Anhieb nichts , was gegen EINE Filtertabelle spricht , solange die Feldnamen eindeutig sind aber
mir fehlt auch die Erfahrung um einschätzen zu können ob es Anwendungsfälle gibt in denen es Probleme geben könnte.
Gruß Emandu
Bevor ich die von dir vorgeschlagene Variante ausprobiere , habe ich noch mit meinen vorhandenen Abfragen getestet....
Ja es funktioniert auch auf diese "einfache Art".Emandu hat geschrieben: ↑Do 19. Jun 2025, 15:56Moin aus dem Norden
Jetzt habe ich mal wieder einen Knoten im Kopf....
Kann ich das überhaupt in der Entwurfsansicht der Abfrage regeln , dass die beiden Filtertabellenwerte direkt greifen?
Kann ich ...und wenn ja wie (korrekte Syntax) ( >=:Startdatum und <=:Enddatum)als Kriterium ersetzen durch (>=tblFilter.Startdatum und <=tblFilter.Enddatum )?
Gruß Emandu
Hier wird der Filterwert geschrieben... und hier habe ich die Argumente ( >=:Startdatum und <=:Enddatum)ersetzt durch die Filterwerte. (Wobei die Beziehungen nicht mehr korrekt im Abfrageentwurf angezeigt werden....) Weil ich direkt im SQL-Code Änderungen vorgenommen habe oder was kann da die Ursache sein ?
Der Nachteil gegenüber Deiner Variante ist sicher die drei im Vorfeld zu erstellenden Abfragen und damit die Performance
Hier schliesst sich noch eine Frage an.
Die Filtertabelle verwende ich ja an verschiedenen Stellen.
Aus der Erfahrung heraus...ist es ratsam eine Filtertabelle mit vielen Filterargumenten aufzustellen (es könnten noch mehr dazukommen) oder dann lieber eine zweite Filtertabelle einzufügen.
Ich wüsste jetzt auf Anhieb nichts , was gegen EINE Filtertabelle spricht , solange die Feldnamen eindeutig sind aber
mir fehlt auch die Erfahrung um einschätzen zu können ob es Anwendungsfälle gibt in denen es Probleme geben könnte.
Gruß Emandu
Re: Fokusprobleme
Ich nutze grundsätzlich eine Tabelle für die Filterung. Ist doch egal, wie viele Felder da drin sind.
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
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.