0

Immer exakt 2 Datensätze erstellen bzw. löschen UND verhindern, dass der Nutzer nur 1 Datensatz anlegen kann. Geht das?

WIr haben eine Datenbank zum Reservieren von ArbeitsPlätzen im CoWorkingBereich erstellt. Die Idee war, jedem Arbeitsplatz bei seiner Erstellung einen 200 Jahre langen "Zeitraum" zuzuordnen, für den der Platz als "frei" eingetragen wird. Jede Reservierung wird über einen Button erstellt, welcher in dem aktuellen Datensatz dem "Zeitraum" auf den gewünschten Reservierungszeitraum ändert UND zwei neue Datensätze anlegt, welche für diesen Platz wieder als "frei" gekennzeichnet sind und jeweils dort beginnen, wo der ausgewählte Datensatz begann bzw. endete und mit dem gewünschten Reversierungszeitraum enden bzw. beginnen. Auf diese Weise aus dem ursprünglich 200 Jahre lange freien "Zeitraum" eine lückenlose Reihe von Zeiträumen, die entweder frei oder reserviert sind. Funktioniert perfekt - BIS AUF FOLGENDES: die Nutzer können über die Schaltfläche "Datensatz hinzufügen" bzw. "Duplizieren" auch einzelne leere Datensatze erzeugen, was zwar nicht zu Fehlern aber zu Irritationen führt ("Warum kann ich einen leeren Datensatz hinzufügen, den ich dann nicht bearbeiten kann?"). Wie kann man das lösen? Wenn man den Nutzer das Recht "Datensatz hinzufügen" entzieht, funktioniert der Button nicht mehr (Fehlermeldung "keine Rechte"). Kann man Buttons programmieren, die auch dann Datensätze anlegen wenn der Nutzer dazu keine Rechte hat? 

Bei Löschen besteht im Grunde dasselbe Problem, ist aber nicht so schlimm - die bisherige Lösung ist, dem Nutzer keine Löschrechte zu geben und mit dem Lösch-Button 2 Datensätze zu leeren, die der Nutzer dann nicht mehr sieht. Unschön ist nur, dass der Admin dann immer wieder viele leere Datensätze löschen muss.

10 Antworten

null
    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Man könnte zB beim eintragen eines neuen Datensatzes ein Script laufen lassen, welches überprüft, ob der Datensatz VOR dem neu angelegten Datensatz Daten beinhaltet oder leer ist. Wenn Daten drin sind legt man per sript noch einen neuen Datensatz an...

     

    ODER man blendet die Schaltflächen über ein Funktionsfeld mit html code aus:

     

    html("<style>.i-setting-copy{display: none;} .i-setting-add{display: none;}</style>")

     

    Passt das?

    • ENERTRAG
    • ENERTRAG_AG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Das mit dem Schaltflächen ausblenden klingt gut - wo gibt man den html-Code ein? 

    • Ninox PremiumSolution Partner
    • derdatenoptimierer
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Den HTML Code gibst Du in einem Funktionsfeld ein.

    Damit man das Funktionsfeld nicht sieht, kannst Du Hintergrund + Farbe auf weiß stellen und die Beschriftung des Funktionsfeldes verstecken. Oder es gleich über "Feld nur anzeigen wenn" ausschließlich für admins sichtbar machen.

    • ENERTRAG
    • ENERTRAG_AG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ah, danke - ich hatte es erst als Button eingefügt. Als Funktion geht es - das "+" ist im Formlar weg. SuperDank! Nur in der Tabelle, aus der man in das Buchungsformular springt, kann der Nutzer noch "hinzufügen" - kriegt man das das auch weg? 

    • Ninox PremiumSolution Partner
    • derdatenoptimierer
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Sorry für die verspätete Rückmeldung. Hier einmal zur Übersicht wie man die einzelnen Elemente bei einer Verknüpfung ausblenden kann:

     

    Nur das "+ Neuer Datensatz"

    html("
    <style>
    .list-button:nth-child(2n+2) {display: none;}
    ")

     

    Das "Vorhandenen Datensatz hinzufügen" mit 

    html("
    <style>
    .list-button:nth-child(2n+1) {display: none;}
    ")

     

    und alle Buttons mit

    html("
    <style>
    .list-button{display: none;}
    ")

    • ENERTRAG
    • ENERTRAG_AG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Merci. Auch hier ist mir nicht klar, wo ich den Code bei einer Verknüpfung eingeben muss - ich sehe nur "Feld nur anzweigen, wenn" und "Schreibbar wenn" wenn ich die Verknüpfung anzeigen lasse... und bei der verknüpften Tabelle selbst findet sich auch keine Eingabemöglichkeit. Der Versuch, den Code im Button einzugeben, welcher mit 

    closeRecord();
    openTable("Reservierungen", "Frei")

    die Tabelle Reservierungen aufruft, half nicht. 

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich hoffe ich verstehe Dich nicht falsch, aber Du meinst, dass "Vorhandenen Datensatz hinzufügen" mit der Lupe unterhalb der Verknüpften Tabelle welches Du ausblenden möchtest?

    • ENERTRAG
    • ENERTRAG_AG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ja, genau das in der Fußzeile unten. Wenn das nicht geht, muss ich diese Tabelle für die Nutzer verstecken und mich drum herum hangeln... wäre mit einigem Aufwand aber machbar. Wenn man das für bestimmte Tabellen ausblenden könnte, wäre es aber perfekt (Nutzer könnten dann nur per definiertem Button Datensätze hinzufügen, in dem Fall hier immer exakt 2 gleichzeitig).

    • Benjamin0815
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Dann erstelle ein Funktionsfeld (fx) und schreibe folgenden Code hinein:

    html("
    <style>
    .list-button:nth-child(2n+1) {display: none;}
    ")

    Dann sollte die Lupe, mit der Möglichkeit einen vorhandenen Datensatz hinzuzufügen, ausgeblendet sein.

    • ENERTRAG
    • ENERTRAG_AG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke, das funktioniert. Nur eine Stelle ist noch offen: siehe rot markiert im Bild. Geht das auch weg?