Beschränkungen mehrerer Benutzer

Solch eine anspruchsvolle Aufgabe hatte ich bislang noch nicht zu lösen!
In einer tabellarisch einfachen Struktur sind Einnahmen und Ausgaben sowie Datum und Person zeilenweise einzutragen.
Für mehrere Personen ist das monatlich aktuelle Blatt/Formular frei zugänglich.
Jedes Blatt ist in 4 Segmente strukturiert:
a) Login,
b) Einnahmen,
c) Ausgaben,
d) Hilfsbereich.


Jeder Benutzer hat unterschiedliche Berechtigungen sowie Sichtbarkeiten:

  1. der „Admin“ darf Alles inkl. Hilfsbereich ändern, ergänzen, neuen Einkaufer hinzufügen und sehen;
  2. der „Chef“ darf nur Einnahmen, Ausgaben, Summen, Überträge eintragen und sehen;
  3. jeder „Einkäufer“ darf nur Ausgaben tätigen und sehen; die Einnahmen sowie Summen, Überträge sind für sie unsichtbar;
  4. jeder kann nur seinen eigenen Namen für seinen Eintrag je Zeile auswählen (Listeneintrag);

X) ob die Ausgaben der anderen Einkäufer respektive „Chef“ frei/gesperrt sind, soll vorerst nicht beachtet werden.


Die Login-Bedingungen habe ich bislang im CALC-Hilfsbereich gelöst, was ziemlich komplex war. Im Bereich Einnahmen/Ausgaben scheitere ich zumindest heute.

Hat jemand so etwas Ähnliches bewerkstelligt? Kennt sich jemand aus mit differenten überlappenden Berechtigungen?


•Ist eine BASE-Datenbank dafür besser geeignet?
•Oder soll ich eine andere Software einsetzen?
= = =
nachträglich ergänzt: mit Summen soll math. Operatoren aus Statistik und Finanz und Datenbank bezeichnet werden.

Das bekommst Du nur über eine Serverdatenbank mit ordentlicher Benutzerverwaltung geregelt. Ich würde Dir Base zusammen mit einer MariaDB empfehlen. MariaDB bzw. MySQL ist recht weit verbreitet - entsprechend viele Anleitungen bekommst Du auch dazu. Die MariaDB ist über einen direkten Treiber von Base aus ansteuerbar.

Du kannst in Calc zwar alle möglichen Blätter mit irgendwelchen Passworten schützen, aber wo hast Du denn dann die Daten liegen, von denen alle Leute irgendeinen Teil sehen und verändern können sollen? Calc ist ein Kalkulationsprogramm, keine Datenbank.

1 Like

… früher verwendete ich MS-ACCESS. Solange, bis ich kollabierte, weil komplexere math. Operationen (höhere Mathematik) damit nicht machbar waren bzw. nur sehr schwer. Auch unter LO-BASE habe ich nichts dergleichen entdecken können, so dass ich letztendlich bei MS-EXCEL und LO-CALC hängen geblieben bin. Ich hoffe, dass ich mit meiner Einstellung falsch liege!
Die wenigen Daten, die in jede monatliche CALC-Tabelle/BASE-Formular eingefügt werden, sind nicht das eigentliche Problem. Sondern die finanzmathematischen plus statistischen Berechnungen mitsamt deren Zugangsbeschränkungen.


Ich ahne, dass ich mein oben genanntes Konzept verwerfen muss…


Die komplex vernetzbaren Abfrage-Prozeduren, die ich in ACCESS dominant und vorteilhaft nutzte, sind hier gar nicht gefragt.

Nur zur Info: Ich erinnere mich schwach, dass ich relevante DB-Spalten nach EXCEL manuell kopierte, um damit nunmehr einfach zu rechnen. Die alte DB-Bank umfasst mehr als 6000 Formular/Datenblätter, teilweise mit Fließtexten.

Unter LO-BASE findest Du da im Prinzip gar nichts. Base ist eher ein Verbindungsmodul zu Datenbanken. Diese können “zufälligerweise” in derselben Datei gespeichert sein oder (csv/dbase) irgendwo auf der lokalen Festplatte oder eben uber einen DB-Treiber (odbc, jdbc bzw. auch native direkte Verbindungen von LibreOffice aus) in einer externen Server-Datenbank liegen.

Gib Die Daten über Base in eine Serverdatenbank ein
.
Überlasse es MariaDB etc sich um die Berechtigungen zu kummern.
.
Ziehe ein Abfrage fur die relevanten Daten aus der Datenquellenansicht in eine Calc Datei. Hier kannst Du mit diesen Daten nach belieben wie bisher arbeiten und hast alle Moglichkeiten von Calc. Ausserdem kannst Du jederzeit in den am Anfang erzeugten Datenbereich zurückgehen und aus dem Menü Daten>Aktualisieren wählen um eben aktuelle Daten zu analysieren.

.
Anmerkungen:

Dazu haben Server-Datenbanken den Login-Namen. Diese UserId lässt sich bei Bedarf mitspeichern.

Es macht da Sinn separate Tabellen fur Einnahmen und Ausgaben zu erzeugen, dann kann das über Tabellenberechtigungen organisiert werden. Weitere Einschränkungen kann man über Views machen. Generell: Was erzwungen werden soll, muss über die Berechtigungen in der Datenbank erfolgen, nicht erst in Base/Calc.

Fur Nutzerrechte etc habe ich bei MariaDB HeidiSQL verwendet und Base nur für Die Abfragen/Formulare.

1 Like

… gut zu wissen :woozy_face::smiling_face_with_three_hearts: / wertvolle Informationen!

Diese 3 Schritte sind kompliziert. Und vermutlich fehlerträchtig, sobald ein Teil geändert wird, oder ein Zugriff verwehrt wird. Deren Robustheit der Funktionalität ist nicht auf 10 Jahre ausgelegt! Also eher eine Lösung mit Sackgasse.


Ich kenne mittelständische Firmen, die „missbrauchen“ die Tabellenkalkulatoren als kaufmännische Datenbank mit Pivot-Sortierung. Das hat mich bislang stets zweifeln lassen, warum sie das machen, und ihren Kunden zurVerfügung stellen.


Leider ist MS-ACCESS dermaßen speziell, und überhaupt nicht gebräuchlich, sodass ich solcherlei den anderen 3 Benutzern nicht anbieten kann.

:kissing_heart:
Diese Abwandlung ist mir gleichzeitig in den Sinn gekommen!


Können Sie mir eine einfache Anleitung/Beispiel geben, denn mit externen DBs kenne ich mich nicht aus.

Das vorgeschlagene System scheidet – zumindest jetzt – aus für diese Aufgabe mit „nur einer Hand-voll“ Daten. Ein externer Server über Funknetz ohnehin, da andere Nutzer vorOrt im Funkloch sind und jeglicher Aufwand, das zu ändern einfach zu hoch ist. Fazit: Nur ein autonomes Mini-System kann die Aufgabe erledigen.

Das einzige was wirklich kompliziert werden kann, ist die Rechteverwaltung in der Datenbank, wenn sich etwas grundsätzliches ändert. (Z.B. Dein "Verkäufer darf keine Einnahmen sehen, wenn Ein-/Ausgaben über dieselbe Tabelle laufen wurden nachtraglich berucksichtigen.).
.
SQL liegt auch nicht jedem, aber komplexe Formeln in Calc auch nicht.
.
Ich nutze meine Datenbanken seit 2018, also frag mich in 3 Jahren. Aber zu behaupten, das externe Datenbanken wie MySQL/MariaDB oder Postgres nicht langzeittauglich sind, ist fazinierend (um es mal milde auszudrücken).
.
Ich habe mich gerade aus dem Grund der Stabilität dafür entschieden. Notfalls kann ich Base durch eine selbstgeschriebene Lösung ersetzen, alles andere finde ich auf jedem OS wieder. Dazu ist der LAMP-Stack viel zu verbreitet.

Dafur reichte das “billigere” Paket von MS ohne Datenbank und scheinbar muss niemand etwas dazu lernen. Datenbanken gelten ja als kompliziert. Warum Excel sls einfach gilt… ? Evtl, weil der Einstieg einfach scheint.

Da hast Du etwas missverstanden (es sei denn Du arbeitest noch unter einem Single-Task-System wie MS-Dos :wink: ). Die “Server-Datenbank” kann auf demselben Rechner wie Base laufen (, muss aber nicht). Meine Development-Version läuft auf meinem Laptop. In der Firma nutze ich ain NAS für etwa 15 Berechtigte + einige “Roles”). Hängt im wesentlichen an der Menge gleichzeitiger Datenzugriffe und der jeweils auszugebenden Datenmenge.
.
Die Systeme sind quasi identisch. Nur die registrierte Datenquelle ist anders, wobei ich bisher eher das Ziel im ODBC-Connector ändere, wenn ich vom Development-Laptop die NAS-Version anspreche.

Ich empfehle HSQL2 weil man das direkt aus einer vorhandenen eingebetteten Datenbank erzeugen kann. Die externe Datenbank besteht dann aus mehreren Dateien, die ein Benutzer zur selben Zeit lesen und schreiben kann. Die URL sieht dann aus wie: jdbc:hsqldb:file:path/DB_Name.
Seit nunmehr 15 Jahren habe ich auch eine Mehr-Benutzer-HSQLDB im Servermodus am Start. Dafür sieht die URL aus wie jdbc:hsqldb:hsql:Server_Name/DB_Name. “Meine” Benutzer bekommen immer nur Formulare ohne Base-Dokument zu sehen.

Der SQL-Code zur Verwaltung von Gruppen und Benutzern ist bei allen klassischen Datenbanken sehr ähnlich und leicht zu verstehen.

Mit Base und einer externen Datenbank ist das wirklich trivial. Eine recht simple Fleißaufgabe, mit der man 2-3 Stunden totschlagen kann. Aber wirklich nur dann, wenn Du mit Datenbanken vertraut bist. Das Ergebnis der Fleißaufgabe kann, wenn es gut ist, viele Jahre unverändert benutzt werden.

Schnelle, unvollständige Demo-DB mit folgenden Gruppen und Benutzern, abgeleitet von einem Kassenbuchentwurf.

User:Password

Gruppe “DBA” kann Tabellen erstellen, löschen, verändern.
Kann Daten einfügen, löschen, editieren.
SA:Villeroy

Gruppe “Boss” kann Daten anzeigen einfügen, löschen, editieren
Julius:Kontrolle

Gruppe “Einkauf” kann Daten in Tabelle “EK” anzeigen, einfügen, löschen, editieren.
Martina:Einkauf
Karla:Einkauf

Verkauf kann Daten in Tabelle “VK” anzeigen, einfügen, löschen, editieren.
Martin:Verkauf
Karl:Verkauf

Habe es noch nicht hinbekommen, dass Boss Julius Einkäufer und Verkäufer erstellen, löschen, ändern kann. Sollte aber gehen.

Das ZIP enthält eine HSQL2-Datenbank, einen passenden HSQL2-Treiber und ein Base-Dokument mit einem Installationsmakro.

  • Öffne das Dokument. Das Makro verbindet das Dokument mit der Datenbank und mit dem Treiber.
  • Öffne ein beliebiges Formular und logge Dich als Julius mit Passwort Kontrolle ein. Der obere Teil fügt einen Datensatz ein. Der untere Teil zeigt alle Datensätze a, nachdem [Update] gedrückt wurde.
  • Schließe die Datenbank und logge Dich als Verkäufer oder Einkäufer an. Du kannst alle Formulare öffnen, weil das Base-Dokument keinerlei Schutzmechanismen kennt, aber Tabelle “VK” existiert nicht für Einkäufer und Tabelle “EK” existiert nicht für Verkäufer.

Wenn Du Abfragen oder Tabellen in Calc oder Writer benutzt, dann geht das auch nur nach erfolgtem Einloggen.

Ich empfehle HSQL2

Meinst Du die H2db? Oder ein upgrade der HSQLdb?

Ich habe doch eine HSQL-Datebank der Version 2.4.1 hochgeladen. Mit der Version 1.8, die für eingebettete Datenbanken verwendet wird, geht das auch alles. Nur halt nicht, wenn sie eingebettet ist.

P.S. Grade fällt mir auf, dass ich wohl mit den Roles irgendwas falsch gemacht habe weil niemand irgendwas editieren kann. Nur was genau?
Egal, dann halt individuell:

GRANT ALL ON EK TO SA;
GRANT ALL ON VK TO SA;
GRANT SELECT, UPDATE, INSERT DELETE ON EK TO "Julius";
GRANT SELECT, UPDATE, INSERT DELETE ON VK TO "Julius";
GRANT SELECT, UPDATE, INSERT, DELETE ON EK TO "Martina","Karla";
GRANT SELECT, UPDATE, INSERT, DELETE ON VK TO "Martin","Karl";