Base Formular verlangt Eingabe erforderlich

Ich habe eine hsql.Datenbank, mit einer Tabelle die über ein Formular seit geraumer Zeit mit Daten versorgt wird. (neue Datensätze und Änderungen).

Obwohl alle Felder in der Tabelle bei “Eingabe erforderlich” - “nein” eingerichtet sind, verlangt Base neuerdings die Eingabe in alle Felder des Formulars.

Wenn ich das Formular mit LibreOffice 5.4.2.2 öffne, dann kann ich die Feldinhalte verändern, mit LO 6.x klappt das nicht mehr.

Gibt es irgendwo eine Möglichkeit alle Felder eines Formulars gleichzeitig auf “Eingabe erforderlich” - “nein” zu setzen ?
Gruß
Paul

Das scheint ein Bug zu sein. Das gleiche Problem hatte ich auch schon. Leider waren die Felder tatsächlich im Formular auf Eingabe=Ja gesetzt. Ich habe das manuell geändert. Es scheint durch eine neuere LO-Version verursacht. Hast Du es mit der neuesten LO-Version. 6.1.3.2 versucht? Ich kann es leider nicht mehr nachvollziehen, da wie gesagt von mir eine manuelle Änderung vorgenommen wurde.

Ja ich habe es mit 6.1.3.2 versucht. Der Fehler (?) scheint mit Version 6 aufgetaucht zu sein. Allerdings nehme ich an, dass es erst jetzt als Fehler erscheint, aber in Wirklichkeit war der Fehler bereits in den Vorversionen.

Das ist so:
Ich habe ein Formular, das ich wohl schon mit einer 4er-Version erzeugt habe, mit einem Tabellenkontrollfeld und vielen einzelnen Feldern. (die Tabelle hat 83 Felder, bei allen ist Eingabe erforderlich = nein)

Im Formular, mit dem Assisten erzeugt, haben alle Felder die Eigenschaft “Eingabe erforderlich = ja”.
Meine 5.4.2.2 Version stört das nicht, offenbar berücksichtigt erst die neue 6er Version diese Eigenschaft ?

Auch wenn ich aus der genannten Tabelle ein neues Formular mit dem Assisten erzeuge führt das zu diesem Effekt.

Jetzt könnte ich zwar alle Felder einzeln auf “nein” umstellen, das würde ich mir gerne ersparen und suche deshalb nach einer Möglichkeit diese Eigenschaft in einem Rutsch (mit einem Makro ?) auf nein zu setzen.

Du kannst, sofern Du einzelne Felder und nicht ein Tabellenkontrollfeld hast, sämtliche Eingabefelder mit der Maus markieren (Strg-Taste zum Betreten der Gruppen, Shift-Taste zum Markieren). Dann kannst Du bei allen Felder die Eigenschaft auf “Nein” stellen. Bei Tabellenkontrollfeld rufst Du die Eigenschaften des ersten Feldes auf. Dann änderst Du das, lässt den Dialog offen und wechselst zum nächsten Feld. Steht dann immer direkt auf “Daten”.

Beim Tabellenkontrollfeld wußte ich das. Ich wußte aber nicht, dass man die Eigenschaften aller markierten Felder mit einem Klick gleichzeitig ändern kann.

Danke, das hat mir geholfen.

Nein, das ist kein Bug. Der ursprüngliche Bug wurde beseitigt. Wenn z.B. mit dem Assistenten ein Formular erstellt wird, dann erzeugt der lauter Felder, bei denen die Eingabe erforderlich ist. Darum hat sich das Base-Formular bisher nur nicht gestört. Diese Einstellung bewirkte nur dann etwas, wenn auch in der zugrundeliegenden Datenbank das Feld als “Not NULL” definiert war.

Das korrekte Verhalten sollte sein, dass bei “Eingabe erforderlich” eine entsprechende Fehlermeldung auftaucht, wenn diese eben erforderlich ist. Dies kann jetzt der Designer des Formulars endlich zusätzlich zu den NOT NULL-Feldern des Formulars entscheiden. Ansonsten könnten wir ja gleich diese Einstellung komplett raus nehmen.

Vielleicht wäre es günstiger, bei Formularassistenten nachzubessern. Der liest dann die Eigenschaften aus den Tabellenfeldern aus und setzt nur die auf “Erforderlich”, die auch in der Datenbank diese Eigenschaften haben. Und wenn er nichts lesen kann, dann ist eben keine Eingabe erforderlich. Das wäre dann ein “Feature-request”. Nur ob das irgendjemand durchführt steht natürlich in den Sternen.

Das verstehe ich jetzt nicht. Es handelt sich um eine integrierte HSQLDB. Alle Felder haben bei NULLABLE den Wert “1” und bei IS_NULLABLE den Wert “YES”, außer beim Schlüsselfeld.
Der Formularassistent setzt trotzdem alle Felder auf “Eingabe erforderlich” was dazu führt, das bei jeder Änderung eines Datensatzes eine Fehlermeldung kommt, falls in diesem Datensatz ein leeres Feld vorhanden ist.
Der Formularassistent verhält sich so als wären die Felder NULLABLE = “0” bzw. IS_NULLABLE = “NO”

Genau so ist es. Dieser Fehler ist nur nie bewusst geworden, weil die Einstellung in den Formularfeldern egal war, wenn die Datenbank selbst das nicht forderte. Stand in dem Formular bei einem Feld, das nicht NULL sein durfte, Eingabe erforderlich > Nein, so erschien eine englischsprachige Fehlermeldung von der Datenbank. Stand dort Eingabe erforderlich > Ja, so erschien eine Formulierung, die auf das Formularfeld hinwies. Den Fehler beim Assistenten werde ich noch melden.