Base Tabelle Autowert wird nicht eingetragen

Hallo Leute

Ich bin neu hier und habe kürzlich Microschrott komplett runtergeschmissen und arbeite nur noch mit dem Pinguin. Ich habe früher mit Access gearbeitet und kenne daher die Struktur einer Datenbank. doch hier blicke ich nicht durch.

Das Thema wurde in diesem Forum bereits diskutiert. Leider steht bei den alten Beiträgen als Datum nur Tag und Monat, so dass ich nicht sehe, aus welchem Jahr sie stammen, also wie alt sie sind. Das Problem könnte ja an der damaligen Version gelegen habe.
Ich habe jedoch genau dasselbe Problem mit den aktuellen Versionen von Linux Mint 22.3 und Libre Office Base Version 24.2.7.2 (X86_64)

Das Schlüsselfeld ist auf INTEGER eingestellt. Ich habe auch schon BIGINT ausprobiert. Obwohl ich den Autowert aktiviert habe, funktioniert dieser nicht. Die Tabelle besteht jedoch auf eine Eingabe…
Erstelle ich jedoch eine Tabelle mit dem Assistenten, wird eine “Beispieltabelle” mit irgendwelchen Feldern erzeugt. Das Schlüsselfeld ist hier als INTEGER formatiert und der Autowert ist deaktiviert. Wenn ich diesen nachträglich aktiviere, funktioniert er in dieser Tabelle. Warum das in einer manuell erzeugten Tabelle nicht funzt, ist nicht ersichtlich. Hat jemand eine Idee oder handelt es sich um einen Bug?
Schon mal herzlichen Dank

Welche Datenbank hast Du denn als Basis genommen? Die interne HSQLDB, die interne Firebird oder versuchst Du es mit einer externen Datenbank?
.
Bei Datenbanken mit LibreOffice leider grundsätzlich: Die Pakete, die Distributionen dort zusammenstellen, weisen immer wieder Bugs auf, die bei den Originalpaketen von LibreOffice selbst nicht vorkommen. Anscheinend testet das niemand.
.
LO-Version hier:
Version: 26.2.3.2 (X86_64)
Build ID: 70e089b17412e4cb7773e41413306b17a2328c34
CPU threads: 6; OS: Linux 6.4; UI render: default; VCL: kf5 (cairo+xcb)
Locale: de-DE (de_DE.UTF-8); UI: de-DE
Calc: threaded

Ich habe es nun nach vielen Versuchen doch endlich geschafft, den Autoeintrag zu so zu aktivieren, dass er auch tatsächlich funktioniert. Warum es am Ende doch ging, weiss ich immer noch nicht. Es scheint irgendwie mit der Reihenfolge bei den Einstellungen der Feldeigenschaften zusammenzuhängen.

Ich war mir nicht bewusst, dass es verschiedene Versionen gibt. Ich habe die Base einfach über den Anwendungsverwaltung von Mint installiert. Die anderen Libre Office-Teile wurden ja bereits bei der Installation von Mint installiert. Wie sollte ich es sonst machen?

Man sollte Base Base eher als ein Verbindungsmodul zu Datenquellen sehen. Das reicht von Textdateien (csv), über Tabbellen aus Calc, dBase-Dateien (das Verzeichnis mit den Dateien dient als Datenquelle) bis zu verschiedenen SQL-Datenbanken.
.
Mitgeliefert (bei Linux evtl. trotzdem einzeln zu installieren) werden normalerweise 2 Datenbanken, die auch “embedded” funktionieren. HSQLDB (ist in Java geschrieben) und Firebird. Embedded bedeutet, dass die Daten in der .odb-Datei gespeichert werden.
.
Wirf auch einen Blick in das Handbuch zu Base:

Bei LibreOffice ist es so, dass sämtliche Linux-Distributionen ihre Pakete aus den Quellen selbst packen. Warum sie das machen ist mir ein Rätsel, weil doch LibreOffice die Pakete gepackt anbietet. Base selbst ist ja mehr ein Verbindungsmodul. Wenn Du eine “Standarddatenbank” erstellt hast, dann wird das eine interne Datenbank mit HSQLDB sein. Dort müsste eigentlich so etwas wie der Autowert anstandslos funktionieren.
.
Ich arbeite viel mit Base und habe da leider von einigen Bugs mit bekommen, die eben in den Linuxversionen stecken, nicht aber denen von LibreOffice:

  • Report Builder startet mit einer Fehlermeldung und bricht dann ab
  • Interne Firebird-Datenbanken werden mit Firebird 4 statt Firebird 3 erstellt und funktionieren nur oberflächlich (Funktionen fehlen, Austausch mit anderen Systemen nicht mehr möglich…)

Die aktuellsten Fassungen direkt von LibreOffice hole ich immer von hier:
Index of /libreoffice/old/latest . Die *.deb-Pakete wären für Mint erforderlich.
.
Die Installation kann auch Parallel zu der von Mint-LibreOffice erfolgen: Parallelinstallation verschiedener Versionen von LibreOffice - The Document Foundation Wiki
Ist dort etwas kompliziert beschrieben. Im Prinzip reicht: Ein Verzeichnis erstellen. Die 3 großen Pakete (Programm, Sprache, Hilfe) entpacken und die darin enthaltenen *.deb-Pakete in das erstellte Verzeichnis schieben. In dem Verzeichnis ein Verzeichnis “install” erstellen. In diesem Verzeichnis die Konsole öffnen und dann
for i in ../*.deb; do dpkg-deb -x $i . ; done
ausführen.

Das ist mir auch aufgefallen.

In 21 Jahren (so lange gibt es Base) habe ich nie den Tabellenassistenten benutzt und habe die Entwurfsansicht irgendwann aufgegeben. Die Syntax und die Semantik einer CREATE TABLE Anweisung ist simpel genug, um sie nach ein paar dutzend Anläufen flüssig herunter zu tippen, einschließlich aller verfügbaren Indices und Constraints. Dabei entgeht man sehr vielen Eigentümlichkeiten, Limitierungen und Bugs, weil man mit der ausgereiften Datenbank-Software kommuniziert und nicht mit einer vollkommen unausgereiften grafischen Entwicklungsumgebung, die in 21 Jahren fast keinerlei Verbesserungen erfahren hat.

  • Erstelle die Tabelle in der Entwurfsansicht nochmal unter anderem Namen neu, mit korrekten Feldtypen und Indices, aber ohne Fremdschlüssel.
  • Kopiere die Werte (sofern vorhanden) in die neue Tabelle, nachdem diese leer erstellt wurde. Das geht wie folgt. Kopiere das Icon der Quelltabelle, markiere das Icon der Zieltabelle und füge ein. Darauf erscheint ein Dialog, wo der Name der Zieltabelle oben stehen muss, zusammen mit der Option “Daten anhängen”. Im nächsten Dialogschritt kannst Du noch die Spalten der beiden Tabellen korrekt zuordnen, falls die Reihenfolge nicht identisch ist.
  • Öffne das Relationenfenster, entferne die Relationen der alten Tabelle, die Tabelle selbst und speicher diese Änderungen.
  • Füge die neue Tabelle zum Relationenfenster hinzu, stelle die Relationen für diese Tabelle her und speicher diese Änderungen.
  • Zurück im Hauptfenster, lösche die alte Tabelle und speicher diese Änderung.
  • Benenne die neue Tabelle um, damit Abfragen, Formulare und Berichte unverändert weiter funktionieren.
1 Like

Ich wollte noch ein SQL-Beispiel anfügen:
Menü Extras->SQL…

CREATE TABLE ITEMS(
    N VARCHAR(30) NOT NULL,
    XID INT NOT NULL,
    DT DATE DEFAULT CURRENT_DATE NOT NULL,
    ID INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    FOREIGN KEY (XID) REFERENCES XTBL (ID),
    CONSTRAINT UNIQ_ITEM_NAME UNIQUE (N),
    CONSTRAINT NO_FUTURE CHECK (DT <= CURRENT_DATE)
)

Edit: Klammern um DT<=CURRENT_DATE
Das erstellt eine neue Tabelle “ITEMS” mit folgenden Spalten:

  • Name mit max. 30 Buchstaben. Die Namen müssen unique sein, sonst Fehlermeldung “unique constraint UNIQ_ITEM_NAME”
  • XID ist irgendein Fremdschlüssel, der einen Primärschlüssel “ID” auf einer Tabelle “XTBL” referenziert.
  • DT ist ein Datum, falls nicht angegeben das heutige. Eingaben von zukünftigen Werten werfen einen Fehler mit “constaint NO_FUTURE”
  • ID ist ein auto-inkrementeller Schlüssel. Diese ausführliche Syntax sollte mit Firebird und HSQL funktionieren. In HSQL würde ID INT IDENTITY ausreichen.

In der Entwurfsansicht müsste man für “UNIQ_ITEM_NAME” den Indexdesigner bemühen,
für den Fremdschlüssel im Relationenfenster herumziehen,
CONSTRAINT NO_FUTURE und DEFAULT CURRENT_DATE sind in der GUI gar nicht abgebildet.

Nach Ausführen des SQL statements muss man einfach nur im Menü Ansicht->Tabellen aktualisieren damit die vorgenommenen Änderungen in der GUI sichtbar sind, sofern sie überhaupt abgebildet sind.
Bei Verwendung von Firebird kann man immer nur ein SQL statement auf einmal ausführen. Mit HSQL und anderen Datenbanken kann man im SQL-Fenster ganze Skripte zur Erzeugung einer kompletten Datenbank ausführen.

1 Like

Führt jetzt zwar immer weiter vom Ursprungspost weg, aber:

EXECUTE BLOCK AS
BEGIN
  CREATE TABLE "Person" (...);
  CREATE TABLE "Ort" (...);
  CREATE TABLE "Beruf" (...);
END

ist die Möglichkeit für Firebird, mehrere Befehle hintereinander auszuführen.

2 Likes

Ich habe die Firebird-Dokumentation immer noch nicht von vorn bis hinten durchgelesen. Wir wissen nach wie vor nicht, über welche Software wir in diesem Thread diskutieren. Wenn es um Base geht, ist die Datenbanksoftware das meist gehütete Geheimnis. Wenn es um Calc geht, ist die Struktur von csv-Daten das meist gehütete Geheimnis. So schreiben wir ständig aneinander vorbei.

Nebenthema: Was Du siehst ist Monat und Jahr, nicht Tag und Monat, also z.B. Aug '21 für August 2021
.
Ich kann außerdem das Datum anklicken und bekomme dann auch Tag und Zeit angezeigt.

Hallo,
ich fand die Tabellenerstellung in LO Base mit Entwurfsansicht etwas gewöhnungsbedürftig und ich habe auch wie Du mit MS Access früher meine Datenbanken erstellt. Die Navigationsleiste funktioniert bei mir gut in LO 26.2, kein Umschalten von Inkrementell auf Zufällig beim Navigieren vorhanden. “Michaels Tech Tutorials” auf YouTube (FreeTube) habe ich kennen und schätzen gelernt. https://youtu.be/jWU0WdMJ2Kw, vielleicht hilfts ja.

Ich antworte hier gleich auf mehrere Rückmeldungen:

RobertG
May 14

Welche Datenbank hast Du denn als Basis genommen? Die interne HSQLDB, die interne Firebird oder versuchst Du es mit einer externen Datenbank?

  • Base zeigt zwar beim Erstellen einer Tabelle ein Auswahlfenster, beim Öffnen erscheint aber nur die Option HSQLDB. Ich nehme daher an, dass diese läuft.

---------------------------------

\ 45x45 Wanderer
May 15

Mitgeliefert (bei Linux evtl. trotzdem einzeln zu installieren) werden normalerweise 2 Datenbanken, die auch “embedded” funktionieren. HSQLDB (ist in Java geschrieben) und Firebird. Embedded bedeutet, dass die Daten in der .odb-Datei gespeichert werden.

Wirf auch einen Blick in das Handbuch zu Base:

Ebedded finde ich sehr gut für kleinere Anwendungen. Die kann man dann problemlos umplazieren und auch die Daten braucht man bei einer Umstrukturierung nicht wieder suchen gehen.

Das Handbuch beinhaltet sehr wenig, damit kommt man nicht weit.


\ 45x45 Villeroy
May 16

In 21 Jahren (so lange gibt es Base) habe ich nie den Tabellenassistenten benutzt und habe die Entwurfsansicht irgendwann aufgegeben. Die Syntax und die Semantik einer CREATE TABLE Anweisung ist simpel genug, um sie nach ein paar dutzend Anläufen flüssig herunter zu tippen, einschließlich aller verfügbaren Indices und Constraints. Dabei entgeht man sehr vielen Eigentümlichkeiten, Limitierungen und Bugs, weil man mit der ausgereiften Datenbank-Software kommuniziert und nicht mit einer vollkommen unausgereiften grafischen Entwicklungsumgebung, die in 21 Jahren fast keinerlei Verbesserungen erfahren hat.

Vielen Dank für die ausführlichen Anweisungen zum Erstellen einer Tabelle. Das werde ich gern ausprobieren.

Ich möchte jedoch an dieser Stelle etwas grundsätzliches loswerden, was mir sehr wichtig erscheint. Ich schreibe das Folgende nicht als Vorwurf, sondern als Hinweis. Es ist offensichtlich, dass Ihr hier einen grossen Einsatz leistet, vielen herzlichen Dank an alle. Ich frage mich jedoch, ob Ihr Euch überhaupt noch vorstellen könnt, wie schwierig und kompliziert das alles einem Einsteiger erscheint und dass nicht jeder ein Linux-Experte werden will, nur damit er flüssig arbeiten kann.

LINUX WAR LANGE AUSSCHLIESSLICHE EINE OPTION FÜR CRACKS, alle anderen hat es gründlich abgeschreckt.Der normale User/Benutzer möchte nämlich nur das tun, was dessen Bezeichnung ja ausdrücklich meint, nämlich benutzen. Du schreibst von einer “vollkommen unausgereiften grafischen Entwicklungsumgebung, die in 21 Jahren fast keinerlei Verbesserungen erfahren hat.”

Das ist in etwa so, als wenn ein Automobilhersteller zwar hochwertige Wagen zu einem unschlagbaren Preis herstellt, dieser sich aber nur von speziell geschulten Leuten fahren lässt. Resultat: Er verkauft sehr wenige Exemplare.

Ein Umsteiger, der nur 08:15 Anwendungen braucht, will sich nicht mit Code herumschlagen müssen, er möchte einfach arbeiten, so wie er es von MS und OS gewohnt ist. Die Vernächlässigung der Benutzeroberfläche und der Assistenden ist daher eine Todsünde, wenn das Ziel ist, möglichst viele zum Umstieg auf Linux zu motivieren. Sie sind sowas wie die Visitenkarte der Software, vergleichbar mit der Sauberkeit eines Badezimmers im Hotel. Wenn man schon beim Einrichten der ersten Tabelle Hilfe suchen muss, obwohl man eigentlich weiss, wie sowas geht, dann fragt man sich natürlich, welche noch weit gravierenden Bugs einem unter dieser Oberfläche erwarten, ob es sich also überhaupt lohnt, in eine scheinbar unausgereifte Software Zeit und Energie zu stecken, nur um an Ende doch zu scheitern.

Um den Um- und Einstieg zu fördern sollten darum Assistenten und detaillierte kontextbezogene Hilfetexte meiner Meinung nach ganz vorne in der Prioritätenliste bei der Entwicklung stehen.

Übrigens denke ich, dass die Erstellung einer einfachen Datenbank wie z. B. die Adressverwaltung eines kleinen Vereins oder die Buchhaltung eines Friseursalons auch von einer KI erstellt werden können, wenn noch nicht heute, dann sicher schon sehr bald.


\ 45x45 Villeroy
May 16

Ich habe die Firebird-Dokumentation immer noch nicht von vorn bis hinten durchgelesen. Wir wissen nach wie vor nicht, über welche Software wir in diesem Thread diskutieren. Wenn es um Base geht, ist die Datenbanksoftware das meist gehütete Geheimnis. Wenn es um Calc geht, ist die Struktur von csv-Daten das meist gehütete Geheimnis. So schreiben wir ständig aneinander vorbei.

Wie ist das mit dem Geheimnis gemeint, es ist doch alles open-source oder nicht?

Kann nicht sein. Gerade zu der internen HSQLDB steht da alles drin, was Du brauchen kannst. Und “beinhaltest sehr wenig” bei einem Umfang von über 700 Seiten finde ich doch ziemlich vermessen. Vermutlich meinst Du da etwas anderes als das aktuelle Base-Handbuch Base Handbuch V2508.

Niemand postet die von Base verwendete Datenbank-Engine.
Niemand postet die in Calc zu importierende csv-Struktur.
Beides muss man bei fast jeder Frage zu Base und zu csv dem Fragesteller langwierig aus der Nase ziehen.

Ja, da hast Du natürlich Recht. Das Handbuch ist sehr gut strukturiert und auch umfangreich. Ich konnte es aber bei meinen Recherchen nicht finden, sondern nur viel einfachere Anweisungen.

Das wird an den Einstellungen des Browsers liegen. Vermutlich öffnet der bei Dir grundsätzlich pdf-Dateien direkt. Gibt es innerhalb des Browsers dann nicht auch die Speichermöglichkeit? Bei mir wird in Firefox angeboten, das direkt zu öffnen, mit Okular (PDF-Betrachter) zu öffnen oder herunter zu laden. Und selbst wenn ich das Ganze im Browser öffne habe ich das anschließend im Downloadverzeichnis liegen.