2022-02-14T23:00:00Z
In der geöffneten Tabellendatenansicht ist kein Bearbeiten möglich. Menupunkte wie “Datensatz löschen” oder “Daten bearbeiten” werden grau angezeigt, auch wenn ich einen Datensatz selektiere, also die Zeile markiere. Es ist unter Windows 10 wie auch unter Ubuntu so. Auch ein Eingabedatensatz zum Anfügen ist nicht vorhanden. Per SQL klappt sowohl DELETE wie INSERT INTO. In Optionen, Extras usw. wurde ich nicht fündig. Wer hat eine Idee oder kennt das Problem ?
Deine Tabelle hat wohl keinen Primärschlüssel. Base ist aber auf einen angewiesen, um den zu bearbeitenden Datensatz eindeutig zu identifizieren.
Auf die Schnelle:
Extras > SQL…
ALTER TABLE "Tabellenname" ADD COLUMN "ID" INTEGER IDENTITY
Ersetzte “Tabellenname” mit Anführungszeichen mit dem tatsächlichen Tabellennamen.
[Ausführen], [Schließen]
Danach: Ansicht > Tabellen aktualisieren
Meines Wissens wird das so nicht funktionieren. Schließlich sind schon Daten in der Tabelle, wenn ich das mit der Nutzung über SQL richtig lese.
Schnelllösung: Tabelle markieren, kopieren und wieder einfügen. Dabei den Tabellennamen ändern, so dass Daten und Struktur eingefgt werden. Dann kommt die Frage, ob ein Primärschlüssel erzeugt werden soll. Diese Frage schließlich mit “Ja” beantworten.
Du hast natürlich Recht. Ich war stillschweigend davon ausgegangen, dass da nur löschbare Dummy-Daten drin sind.
Leider, leider ist das dann aber kein automatischer Primärschlüssel. Warum eigentlich nicht?
Das ist die große Frage: Bug 121210, Bug 120345, Bug 108057.
Die blödeste Situation entsteht dabei in Firebird, weil damit ausgeschlossen ist, nach dem Import noch irgendwie zu einem autoincrement-Wert in der Tabelle zu kommen.
Meine Empfehlung an der Stelle ist eigentlich immer (seit 14 Jahren oder so), erst leere Tabellen mit allem Pipapo zu erstellen und dann erst Daten hineinkopieren (Auto-IDs auslassen). Das stellt auch sicher, dass man hinterher konsistente Daten hat weil alles was der gegebenen Struktur widerspricht einfach nicht importiert wird. Herummanipulieren bis es passt kann man ja in Calc.
Danke, eine gute Empfehlung, allerdings hab ich hier genau eine andere Absicht, nämlich schnell eine Struktur aus Calc zu erstellen und das Pipapo nachträglich zu vollziehen.
Vielen Dank, ja so klappt das! Nun können die Datensätze auch ohne SQL direkt bearbeitet werden.
Wie Du aber festgestellt hast, können all die Gültigkeitsregeln (Pipapo) einer Datenbank nicht nachträglich angewandt werden wenn bereits ungültige Daten gespeichert sind. So gut wie alle Datensammlungen auf Tabellenkalkulationsblättern sind inkonsistent. Sie enthalten Lücken, wo die Datenbank keine Leerstellen zulassen sollte. Sie enthalten SVERWEISe auf nicht mehr vorhandene Daten (gerne maskiert durch IFNA()) und sie enthalten stets (leere) Zeichenketten in numerischen Spalten (=IF(A2="";…) oder überlange Chef-Kommentare in ansonsten kurzen Textfeldern.
Wenn man sich mit Datenbanken besser auskennt als mit Calc, dann könnte man den ganzen Datenmatsch als lange Textfelder in eine temporäre Tabelle importieren und dann mit entsprechenden INSERT statements auf die richtigen Tabellen verteilen aber das will auch wieder niemand weil man sich für größere Datenmanipulationen lieber auf Calc zurückzieht. Ist ja auch kein Problem, aber man muss sich die Daten zurechtkneten wenn man aus der Datenbank auch wirklich Nutzen ziehen will.