Multiuser und Auswertung von Daten aus einer SQLite DB
Verfasst: Donnerstag 29. Dezember 2022, 22:45
Hallo liebe Community,
um einige erforderliche Arbeitsschritte zu vereinfachen, vergewaltige ich seit längerem Excel als DB.
Jedesmal sind bei Änderungen viel VBA und Anpassungen in den Tabellen vorzunehmen.
Daher suchte ich nun eine Möglichkeit, die Daten in einer relationalen Datenbank zu speichern.
Es gibt jedoch das Problem, dass ich keinen Server für SQL oder MariaDB erhalten werde.
Nun war mein Gedanke, dass ich eventuell SQLite mit Python nutzen kann. Beim genaueren Lesen bin ich über folgende Fallen gestolpert.
Dazu möchte ich kurz die zwei wichtigsten Szenarien bneschreiben.
Szenario 1:
Multiuser:
Es existiert ein großes Tabellenwerk.
Diese Daten möchte ich gerne in einer relationalen Datenbank verwalten.
Seit SQLite 3 kann man ja mittels Pager Modul sicherstellen, dass kein zeitgleicher Schreibvorgang erfolgen kann.
Fraglich ist nur, wenn in der GUI der gleiche Datensatz geändert wurde. Dann ist ja ein Überschreiben der Angaben von Teammitglied A durch die Angaben von Teammitglied B möglich.
Meine Idee wäre, dass vor dem Schreiben/speichern ein Abgleich mit einer Art Timestamp stattfindet.
Dazu muss in der Userform ein Timestamp A hinterlegt werden, wann der Datensatz geöfnet wurde.
In der Datenbank ist in einer Spalte der Timestamp B, wann der Datensatz letzmalig geändert wurde.
Wenn die Änderung nun gespeichert werden soll, ist es doch möglich zu prüfen, ob Timestamp B älter als Timestamp A ist.
Trifft dieses zu, wird geschrieben, ansonsten wird der Datensatz in der Userform aktuaklisiert.
Kann man auf diesem Wege ein ungewolltes überschreiben verhindern?
Szenario 2:
Zusammenführen mehrere SPLiteDB in eine HauptDB:
Ich muss eine Statistik führen, die von 12 Teams mit je 8 bis 10 Mitarbeitern mit Daten gefüllt werden soll.
Dazu habe ich angedacht, jedem Team eine DB zur Verfügung zu stellen.
Alle Datenbanken sind vom Aufbau absolut gleich.
Für die gesamte Auswertung des Betriebes wollte ich die Daten in eine Hauptstatistik (HauptDB) überführen.
Dazu habe ich angedacht, den Autoincrementeintrag in einer gesonderten Spalte mit einem Präfix zu verketten.
(z.B. Team 01_1, Team 02_1, usw.)
Nun wollte ich prüfen, welche die Id mit Präfix in der Hauptdatenbank bereits vorhanden ist. Wenn nicht, soll dieser kopiert und in die Hauptdatenbank eingefügt werden.
Dazu müsste ich bei einer Aktualisierung alle TeamDB in einer Schleife durchlaufen, prüfen und evtl. einfügen.
Ich würde mich freuen, wenn mir der eine oder andere Fachmann die entscheidenden Tipps zur Machbarkeit geben könnte.
Da ich bereits weit über 50 bin, kein Informatiker o.ä. (also reiner Autodidakt), bitte ich um Nachsicht, wenn ich auf Anhieb nicht alles verstehe.
Jedoch gehöre ich zu dem Kreis, der sich in der Weiten des WWW erst einmal nach Lösungen umschaut.
Herzliche Grüße
Roggi
um einige erforderliche Arbeitsschritte zu vereinfachen, vergewaltige ich seit längerem Excel als DB.
Jedesmal sind bei Änderungen viel VBA und Anpassungen in den Tabellen vorzunehmen.
Daher suchte ich nun eine Möglichkeit, die Daten in einer relationalen Datenbank zu speichern.
Es gibt jedoch das Problem, dass ich keinen Server für SQL oder MariaDB erhalten werde.
Nun war mein Gedanke, dass ich eventuell SQLite mit Python nutzen kann. Beim genaueren Lesen bin ich über folgende Fallen gestolpert.
Dazu möchte ich kurz die zwei wichtigsten Szenarien bneschreiben.
Szenario 1:
Multiuser:
Es existiert ein großes Tabellenwerk.
Diese Daten möchte ich gerne in einer relationalen Datenbank verwalten.
Seit SQLite 3 kann man ja mittels Pager Modul sicherstellen, dass kein zeitgleicher Schreibvorgang erfolgen kann.
Fraglich ist nur, wenn in der GUI der gleiche Datensatz geändert wurde. Dann ist ja ein Überschreiben der Angaben von Teammitglied A durch die Angaben von Teammitglied B möglich.
Meine Idee wäre, dass vor dem Schreiben/speichern ein Abgleich mit einer Art Timestamp stattfindet.
Dazu muss in der Userform ein Timestamp A hinterlegt werden, wann der Datensatz geöfnet wurde.
In der Datenbank ist in einer Spalte der Timestamp B, wann der Datensatz letzmalig geändert wurde.
Wenn die Änderung nun gespeichert werden soll, ist es doch möglich zu prüfen, ob Timestamp B älter als Timestamp A ist.
Trifft dieses zu, wird geschrieben, ansonsten wird der Datensatz in der Userform aktuaklisiert.
Kann man auf diesem Wege ein ungewolltes überschreiben verhindern?
Szenario 2:
Zusammenführen mehrere SPLiteDB in eine HauptDB:
Ich muss eine Statistik führen, die von 12 Teams mit je 8 bis 10 Mitarbeitern mit Daten gefüllt werden soll.
Dazu habe ich angedacht, jedem Team eine DB zur Verfügung zu stellen.
Alle Datenbanken sind vom Aufbau absolut gleich.
Für die gesamte Auswertung des Betriebes wollte ich die Daten in eine Hauptstatistik (HauptDB) überführen.
Dazu habe ich angedacht, den Autoincrementeintrag in einer gesonderten Spalte mit einem Präfix zu verketten.
(z.B. Team 01_1, Team 02_1, usw.)
Nun wollte ich prüfen, welche die Id mit Präfix in der Hauptdatenbank bereits vorhanden ist. Wenn nicht, soll dieser kopiert und in die Hauptdatenbank eingefügt werden.
Dazu müsste ich bei einer Aktualisierung alle TeamDB in einer Schleife durchlaufen, prüfen und evtl. einfügen.
Ich würde mich freuen, wenn mir der eine oder andere Fachmann die entscheidenden Tipps zur Machbarkeit geben könnte.
Da ich bereits weit über 50 bin, kein Informatiker o.ä. (also reiner Autodidakt), bitte ich um Nachsicht, wenn ich auf Anhieb nicht alles verstehe.
Jedoch gehöre ich zu dem Kreis, der sich in der Weiten des WWW erst einmal nach Lösungen umschaut.
Herzliche Grüße
Roggi