🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Autowert soll bei 1 starten

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Oppermann
Beiträge: 5
Registriert: Sa 10. Jul 2021, 21:45

Autowert soll bei 1 starten

Beitrag von Oppermann » Sa 10. Jul 2021, 21:51

Hallo zusammen,

weil bei Libre Base ja der kleine "Macken" ist, dass der Autowert bei 0 startet, wollte ich das ändern. Im Internet habe ich eine SQL-Syntax gefunden mit ALTER TABLE. Allerdings scheint es darin einen Syntaxfehler zu geben. Wo liegt das Problem?

Code: Alles auswählen

ALTER TABLE "tblBuecher"
ALTER COLUMN "bueID" RESTART WITH 1;
TABLE wird blau geschrieben. Liegt das daran, dass ich schon einen Datensatz in dieser Tabelle erstellt habe?

Mfg
Oppermann

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Autowert soll bei 1 starten

Beitrag von RobertG » So 11. Jul 2021, 10:32

Hallo Oppermann,

zuerst muss natürlich der Wert '1' auch noch frei sein. Wenn Deine Tabelle unbedingt bei '1' starten soll, dann reicht es schon, nur einen Datensatz in die Tabelle zu schreiben und den dann wieder zu löschen. Anschließend steht der Autowert bei der HSQLDB für den »ersten« Datensatz auf '1'.

Wenn Du bereits einen Datensatz mit in der Tabelle hast, welchen Wert hat denn bei dem die "bueID"? Die darf natürlich nicht '1' sein.

Wenn Du nicht die HSQLDB verwendest, dann passt der Befehl vermutlich nicht.
HSQLDB:

Code: Alles auswählen

ALTER TABLE "Tabellenname" ALTER COLUMN "Feldname" RESTART WITH <neuer_Feldwert>;
Für die interne Firebird Datenbank sieht das so aus.
Firebird:

Code: Alles auswählen

ALTER TABLE "Tabellenname" ALTER "Feldname" RESTART WITH <letzter_Feldwert>;
Bei der HSQLDB wird der nächste zu vergebende Wert eingegeben. Dort wäre also die '1' in Deinem Falle angebracht. Bei Firebird müsste es die 'o' sein, damit der nächste Wert '1' wird. Bei Firebird muss auch der Zusatz COLUMN weggelassen werden.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Oppermann
Beiträge: 5
Registriert: Sa 10. Jul 2021, 21:45

Re: Autowert soll bei 1 starten

Beitrag von Oppermann » So 11. Jul 2021, 13:47

Hallo Robert,

danke für den Tipp mit dem Löschen des ersten Datensatzes. Das werd' ich jetzt in allen Tabellen so machen.

Da ich bisher nur ein Buch eingetragen hatte, gab es eigentlich auch nur die ID 0. Die Datenbank hab ich mit LibreOffice neu erstellt, da gab es nur HSQLDB zur Auswahl. Wo liegt denn der Unterschied zu Firebird? Ich benutze das erste Mal Libre Base und bei MS Access gibt es so eine Auswahl nicht bei erstellen einer neuen DB.

Außerdem war in der Syntax das Wort TABLE blau geschrieben, bedeutet das nicht, der Syntaxfehler liegt dort? ALTER COLUMN war grün geschrieben.

Mfg
Oppermann

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Autowert soll bei 1 starten

Beitrag von RobertG » So 11. Jul 2021, 16:38

Hallo Oppermann,

zuerst einmal das mit der Einfärbung. Die Einfärbung erfolgt nach den Kriterien, die auch für die Abfragen definiert wurden. Und da scheint eben der Begriff "TABLE" genau an der gleichen Stelle verzeichnet zu sein wie "SELECT" und "FROM". Die anderen Begriffe werden dann eben in grüner Farbe dargestellt. In ockerfarbener Darstellung siehst Du das, was für den Editor Text ist.

Base hat 2 Datenbanken eingebaut. Da Firebird noch nicht vollständig integriert ist ist es bloß über die experimentellen Funktionen erreichbar. Das war zwischendurch einmal anders. Da gingen wir davon aus, dass Firebird die HSQLDB innerhalb einer recht kurzen Frist auch ersetzen könnte und dann tauchten eben die entsprechenden Probleme vor allem beim Wechsel von HSQLDB zu Firebird auf.

Wenn Du anfängst mit einer Datenbank, dann bleibe erst einmal bei der internen HSQLDB. Der Umstieg ist immer möglich. Die HSQLDB läuft einfach besser zusammen mit der grafischen Benutzeroberfläche.

Wenn Du bereits mit Datenbanken gearbeitet hast und Funktionen brauchst, die die HSQLDB nicht zur Verfügung stellt (DATEADD, LIST) oder der Datenbestand sehr groß werden wird (Tabellen mit mehr als 10.000 Datensätzen), dann ist Firebird besser geeignet. Die Geschwindigkeitsunterschiede bei großen Tabellen habe ich kürzlich noch untersucht. Die hängen aber weniger mit der Datenbank als mit der Java-Verbindung zur Datenbank zusammen. Die gibt es nämlich auch, wenn Du mit Base zu einer externen Datenbank wie MariaDB/MySQL verbindest. Bei der direkten Verbindung läuft der Datenstrom genauso schnell wie bei Firebird, bei der über JDBC (also die Java-Schnittstelle) so langsam wie mit der HSQLDB.

Das Ganze ist aber nur ein Problem bei vielen Datensätzen. Ich erstelle interne Datenbanken für andere auch bisher grundsätzlich weiter mit der HSQLDB.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Oppermann
Beiträge: 5
Registriert: Sa 10. Jul 2021, 21:45

Re: Autowert soll bei 1 starten

Beitrag von Oppermann » Do 15. Jul 2021, 21:43

Hallo Robert,

du hast mich jetzt leider vollends verwirrt.

Im übrigen scheint kein ALTER TABLE Befehl zu gehen. Auch nicht ADD COLUMN. Keine Ahnung warum. Die Gänsefüßchen bei den Tabellen- und Feldnamen, sind die das Problem?

Außerdem kann ich beim Anlegen einer neuen DB nur HSQLDB auswählen. (hab LibreOffice 7.1).

Mal noch ne andere Frage: Wie kann ich in einem Formular dieses blöde Listenfeld auf mehrere Spalten einstellen? Das zeigt mit nur die erste Spalte an - und da ich nicht auswendig weiß, welche Nummer z.B. Dan Brown hat, ist das ziemlich sinnlos. Und kann ich das mit einer Art Suchfunktion kombinieren? z.B. dass ich "Dan" eingebe und dann kommt der entsprechende Datensatz?

Bisher habe ich nur auf der Arbeit in MS Access DBs erstellt.

Mfg
Oppermann

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Autowert soll bei 1 starten

Beitrag von RobertG » Do 15. Jul 2021, 22:21

Hallo Oppermann,

ich habe den Verdacht, dass Du nicht weißt, dass das Ganze unter Extras → SQL eingegeben werden muss. Wenn gar nichts davon gehst, dann versuchst Du das vielleicht im Abfrageeditor. Der lehnt so etwas ab, weil das ja keine Abfrage ist.

Du bekommst zur Zeit grundsätzlich nur die HSQLDB angeboten. Firebird ist seit LO 6.4.3 wieder zurück in den experimentellen Status gesetzt worden. Da ist eine Zeit lang wohl auch ein Entwickler für bezahlt worden bis das Ganze erst einmal grundsätzlich lief - und seitdem ist das eben eine Baustelle. Um eine Firebird-Datenbank zu erstellen müsstest Du Extras → Optionen → LibreOffice → Erweitert → Experimentelle Funktionen aktivieren auswählen. Ich rate davon vor allem für den Anfang ab.

Du musst die Nummer von z.B. Dan Brown gar nicht wissen. Die steht in der 2. Spalte und wird automatisch in die Tabelle eingetragen. Beim Listenfeld ist es in der Regel so, dass die Inhalte, die angezeigt werden, nicht gespeichert werden. Stattdessen wird der Primärschlüssel für diese Inhalte in der Tabelle als Fremdschlüssel abgespeichert.

Wenn Du mit Base überhaupt nicht vertraut bist: Teste erst einmal das Eingangsbeispiel des Handbuches. Im Handbuch findest Du dann auch, wie Du mehr als nur ein Feld zusammenfassen kannst, so dass im Listenfeld z.B. die Ware und der Preis steht.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten