Tagesstatistik in Base

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Rudi_2018
Beiträge: 9
Registriert: Di, 31.07.2018 16:38

Tagesstatistik in Base

Beitrag von Rudi_2018 »

Ich möchte zur Erfassung von Personendaten im Eingabe-Formular eine laufende Nummer anzeigen, welche die Anzahl der erfassten Einträge pro Tag und auch des Monats anzeigt.

In der geplanten Anwendung ist es wichtig die Anzahl der täglichen Restplätze zu kennen, die Monatliche Anzahl dient "nur" der Statistik und sollte ebenfalls beim eingeben sichtbar sein. Nun ist die Frage geht das überhaupt und falls ja, wie mache ich das.

Gruss Rudi
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Tagesstatistik in Base

Beitrag von RobertG »

Hallo Rudi,

ob so etwas mit einfachen Mitteln geht hängt von der Konstruktion des Formulars ab. Prinzipiell kannst Du natürlich in Abfragen zusammenrechnen, wie viele Datensätze mit einem entsprechenden Merkmal bisher vorhanden sind.
Hast Du jetzt aber nur ein einfaches Formular mit normalen Eingabefeldern, so sind bei Neueingaben die Felder leer - auch ein gegebenenfalls per Abfrage gefülltes Feld, weil dort der Datensatz noch nicht existiert.
Arbeitest Du mit einem Formular, das ein Tabellenkontrollfeld als Grundlage hat, dann siehst Du auch vorhergehende Datensätze und damit auch das Ergebnis der Abfrage in dem vorhergehenden Datensatz.
Was nur mit Hilfe von Makros geht: Das Ergebnis einer Abfrage in einem Formular präsentieren, dessen Datensatz neu, also noch nicht in der Datenbank abgespeichert ist.

Für die Abfragetechnik: Suche im Handbuch nach dem Begriff "korrelierte Unterabfrage" (aktuelles Handbuch Kapitel "Abfragen", S. 283f.) sowie "Zeilennummerierung" (aktuelles Handbuch Kapitel "datenbank-Aufgaben", S.412ff.).

Gruß

Robert
Rudi_2018
Beiträge: 9
Registriert: Di, 31.07.2018 16:38

Re: Tagesstatistik in Base

Beitrag von Rudi_2018 »

Hallo Robert,

danke für die schnelle Antwort. Es wird ein einfaches Formular verwendet, das nur die im Moment eingegebenen Daten anzeigt, bis sie abgespeichert werden. Das abspeichern muss sofort erfolgen, da aus Datenschutzgründen die persönlichen Daten nicht mehr am Bildschirm einsehbar sein dürfen. Also eine Lösung wo ältere Datensätze angezeigt werden kommt somit nicht in Frage.

Ich werde mir deine Vorschläge im Handbuch mal zu Gemüte führen und schaue mal ob ich ein Makro dafür gebacken bekomme.

Gruss Rudi
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Tagesstatistik in Base

Beitrag von RobertG »

Hallo Rudi,

wenn Du mit Datenschutzgründen argumentierst ist für Dich die interne Datenbank, vermutlich überhaupt Base, der falsche Weg. Jede Person, die eine Basedatei vor sich hat, kann doch die Tabellen und Abfragen sehen. Das Formular gibt da nur einen kosmetischen Schutz. Und dies ist zuerst auch einmal so, wenn Du auf eine externe Datenbank zugreifst. Da müsste dann schon für jede Person eine separate *.odb-Datei existieren und jede Person mit einem separaten Passwort auf eine Serverdatenbank zugreifen, die auch nur die Ansicht und das Ändern der eigenen Daten zulässt.

Ich habe so etwas bei Serverdatenbanken in Kombination mit entsprechend vielen Benutzern ausprobiert. Wenn ich so etwas lösen wollte würde ich den Weg über einen Webserver und PHP/MariaDB gehen. Da sind die Abfragen für die Person, die eingibt, auf dem Server nicht zum editieren erreichbar.

Gruß

Robert
Rudi_2018
Beiträge: 9
Registriert: Di, 31.07.2018 16:38

Re: Tagesstatistik in Base

Beitrag von Rudi_2018 »

Also ich habe trotz langwieriger Suche nichts gefunden wie ich per Makro in ein Feld in meinem Eingabeformular schreiben kann. Ich bräuchte da doch noch einen Tip.

Gruss Rudi
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Tagesstatistik in Base

Beitrag von RobertG »

Hallo Rudi,

Du kannst doch aus dem Handbuch das Kapitel "Werte in einem Formular vorausberechnen" im Kapitel "Makros" ansehen. Du brauchst einen Zugriff auf das Tabellenfeld über das Formular. Möglicher Zugriff auf das Formular, wenn nicht über ein Ereignis innerhalb des Formulars gesteuert:

Code: Alles auswählen

oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.forms.getByName("Hauptformular")
Jetzt von dort den Zugriff auf das Feld:

Code: Alles auswählen

oField = oForm.getByName("MeinTextfeld")
Dann die Eingabe des Wertes in dieses Textfeld bzw. auch direkt in die darunterliegende Datenbankzeile:

Code: Alles auswählen

oField.BoundFiled.UpdateString("Neuer Text")
Gruß

Robert
Antworten