0

Verhindern von leeren Datensätzen

Wenn ein User einen neuen Datensatz anlegen möchte und er vor der Erfassung der Daten bzw. der Pflichtfelder prozessual unterbrochen wird, wird dennoch ein neuer - leerer Datensatz angelegt. Wie kann ich dies verhindern?

10 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Yvonne, das lässt sich prinzipiell gar nicht verhindern. Es wird sofort immer ein neuer, zunächst halt leerer Datensatz erzeugt. Der kann nur gelöscht werden (was bspw. bei Rechnungen natürlich ungünstig ist, weil die Record-Nr. fehlt).

    Man kann höchstens eine Formularseite mit den wichtigsten Feldern temporär vorschalten, um dann erst beim Klick auf einen Button per Script den Datensatz in der eigentlichen Tabelle zu erstellen, die bereits erfassten Daten zu übertragen und zur weiteren Bearbeitung zu öffnen.

    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    ... oder man lässt den User nicht auf "neuen Datensatz erstellen" drücken (deaktiviert diesen Button ggf. sogar über ein Formelfeld und CSS) sondern erzeugt den neuen Datensatz über einen Button (wie planox schon schrieb)  und öffnet diese leeren Datensatz gleich via popupRecord() ... wenn dann eine Unterbrechung stattfindet, sieht der User zumindest, dass schon ein neuer Datensatz erzeugt wurde 

    • Michi.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    oder bei  verlassen der Registerkarte, delete(this) wenn pflichtfelder leer sind

    • ZitronenKiller
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Stellt sich zunächst immer die Frage, warum leere Datensätze ein Problem sind. Rechnungsnummern oder ähnliches auf der Record-Id aufzubauen ist generell keine gute Idee.

    Für das Folgende gehe ich davon aus, dass leere Sätze einfach "unschön" sind, aber kein Problem darstellen. Ich baue in meinen Programmen diese Konzepte ein:

    1. Eine dialog Abfrage sinngemäß ("Möchtest Du wirklich einen neuen Satz anlegen"), die auf einem Button liegt. Der User kann den neuen Datensatz nur darüber anlegen.

    2. Die oben bereits erwähnte Formularmaske, die die Daten nach Plausi prüft und den neuen Datensatz erst anlegt, wenn alles komplett ist. Das ist recht aufwändig. Die Maske muss User spezifisch aus einer eigenen Tabelle kommen, damit sich die User nicht gegenseitig die Daten überschreiben. Funktioniert am Besten und hat den Charme, dass der "angefangene" Datensatz user spezifisch zwischengespeichert wird und der User an der selben Stelle weitermachen kann

    3. Ein "Verwerfen" button: Ein J/N Feld steuert den Button, nach Eingabe des Datensatzes, solange unvollständig (oder PlausiPrüfung negativ) ist der Buttin sichtbar und löscht den Datensatz auf Druck. Nach vollständiger Eingabe verschwindet der Button. Ich verwende für die DatenAdministration dazu ein weiteres StausFeld, in dem ich den Plausi-Prüf Status festhalte, somit kann ich notfalls manuell löschen.

    Die drei Konzepte wende ich nicht unbedingt gleichzeitig an, sondern wähle das jeweils passende. Die Zeiterfassung nutzt z.B. #2, Bei Angeboten nehmen ich 1+3.

    Gruß

    John

    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen
    ZitronenKiller said:
    Stellt sich zunächst immer die Frage, warum leere Datensätze ein Problem sind. 

    Sehe ich genauso. Einzige Ausnahme: Rechnungen. Aber nicht, weil die Rechnungsnummer auf der Record-ID aufgebaut wäre (in der Tat keine gute Idee), sondern weil anhand der nicht manipulierbaren Record-ID bewiesen werden kann, dass keine Rechnungen gelöscht wurden, was ein gewichtiges Argument im Hinblick auf die DSGVO sein kann.

    Ansonsten finde ich es auch nicht tragisch, wenn ab und zu versehentlich ein leerer Datensatz erzeugt wird. Zu nBereinigung kann man sich bspw. einen Adminbereich einrichten, in dem man sich regelmäßig alle leeren Datensätze anzeigen lässt und diese nach einer Überprüfung auch per Button löschen kann.

      • Senectute_24
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Ich benötige dringend so ein skript, das überprüft ob ein Datenfeld einer Tabelle leer ist und somit alle leeren Datensätze löscht. 

      wie könnte das z.B. aussehen und an welcher Stelle muss es eingebaut sein?

      Vielen lieben Dank! 

      • Ninox-Professional
      • planoxpro
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Im Prinzip mit 

      delete select TABELLE where DATENFELD = null

      Ein Button mit diesem Code könnte an beliebiger Stelle in der Datenbank platziert werden. Durch das „select“ kann von überall aus auf die betreffende Tabelle zugegriffen werden.

      Ich würde aber unbedingt einen dialog() vorschalten und außerdem zur Kontrolle eine Ansicht mit den betreffenden Datensätzen erstellen. Der Filter wäre derselbe:

      select TABELLE where DATENFELD = null

      Dann kann man die betreffenden Datensätze noch mal überprüfen, bevor man sie unwiderruflich löscht.

      • Senectute_24
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Danke! aber wo werden die betroffenen Datensätze gezeigt/aufgelistet? 

      • Ninox-Professional
      • planoxpro
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Da, wo du sie sehen willst. Die Ansicht und der Button können wie gesagt an beliebiger Stelle in der Datenbank platziert werden. Wie ich in dem Ausgangspost schrieb:

      „Zur Bereinigung kann man sich bspw. einen Adminbereich einrichten, in dem man sich regelmäßig alle leeren Datensätze anzeigen lässt und diese nach einer Überprüfung auch per Button löschen kann.“

      Also bspw. eine neue Seite namens „Wartung“ oder so erstellen und auf dem Formular eine Ansicht sowie einen Button platzieren (beide in „Layout-Felder“ wählbar). In die Ansicht unter „Formel“ kommt

      select TABELLE where DATENFELD = null

      In den Button unter „Beim Klicken“:

      if dialog("!", "Sind Sie sicher?", ["Ja", "Nein"]) = "Ja" then
         delete select TABELLE where DATENFELD = null
      end
      • Senectute_24
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Vielen lieben Dank! hat wunderbar geklappt.

Content aside

  • vor 8 MonatenZuletzt aktiv
  • 10Antworten
  • 365Ansichten
  • 8 Folge bereits