BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Autowert ändern mit firebird

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Ruedi
Beiträge: 7
Registriert: Di 14. Apr 2020, 10:31

Autowert ändern mit firebird

Beitrag von Ruedi » Di 19. Jan 2021, 10:09

hallo, ich habe im Frühling auf firebird umgestellt (leider). Da ich Rechnungsnummern und Belege in der HSQDB jeweils anfangs Jahr auf das neue Jahr + laufende Nummer umgestellt habe, stehe ich vor folgendem Problem: Ich kann den Autowert mit firebird nicht temporär auf "nein" stellen um den "Startwert" zu ändern. (Tabelle kopieren und umbenennen geht nicht).
1. Hat jemand einen Tip?
2. gibt es eine Möglichkeit wieder zurück auf HSQDB?

Ruedi

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Autowert ändern mit firebird

Beitrag von RobertG » Di 19. Jan 2021, 12:51

Hallo Ruedi,

ich kopiere einmal einfach aus dem Handbuch, aktuelle Fassung LO 7.0, S. 128:
Bei FIREBIRD gestaltet sich der Zugriff auf den Autowert schwieriger, da er mit Hilfe von gesonderten
Generatoren erzeugt wird. Über

Code: Alles auswählen

SELECT RDB$FIELD_NAME, RDB$RELATION_NAME, RDB$GENERATOR_NAME FROM
RDB$RELATION_FIELDS WHERE RDB$GENERATOR_NAME IS NOT NULL
wird zuerst einmal ermittelt, wie der Generator überhaupt heißt, der zu dem entsprechenden Feld einer Tabelle gehört. Die Bezeichnungen werden in der internen Firebird-Datenbank als RDB$1, RDB$2 usw. fortgeschrieben. Dann kann der Wert mit

Code: Alles auswählen

ALTER SEQUENCE RDB$1 RESTART WITH 10;
Zurück zur HSQLDB ist ohne große Probleme möglich, wenn Du einfach eine neue Datenbank als HSQLDB erstellst und dann die Tabellen rüber kopierst. Falls Du aber mit Funktionen wie DATEADD() oder LIST() in den Abfragen gearbeitet hast, dann wirst Du an dieser Stelle deutlich Probleme bekommen. Denn so etwas wie 19.01.2021 + 1 = 20.01.2021 kann z.B. die interne HSQLDB nicht.

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

Ruedi
Beiträge: 7
Registriert: Di 14. Apr 2020, 10:31

Re: Autowert ändern mit firebird

Beitrag von Ruedi » Di 19. Jan 2021, 21:19

Vielen Dank Robert, du hast mir wieder einmal kompetent geholfen. Zu erwähnen wäre vielleicht noch für Anfänger: Handbuch „Base“ für LibreOffice S.122 "Direkte Eingabe von SQL-Befehlen". Ich bleibe mal bei firebird.
Ruedi

Ruedi
Beiträge: 7
Registriert: Di 14. Apr 2020, 10:31

Re: Autowert ändern mit firebird

Beitrag von Ruedi » Mi 4. Jan 2023, 21:32

hallo, eine neue Frage zum gleichen Thema.
vor einem Jahr hat das schön funktioniert, habe mir eine Anleitung dazu geschrieben. Nun bekomme ich folgende Fehlermeldung beim Befehl: ALTER SEQUENCE RDB$1 RESTART WITH 2023001; (2023001 = neuer Wert am Ende der Tabelle)
3: firebird_sdbc error:
*Cursor is not open
caused by
'isc_dsql_fetch'

Ich habe zu wenig Erfahrung, was das bedeutet und finde auch nirgends Hilfe im Netz. Im neuesten Handbuch S. 141 ist das Prozedere etwas anders beschrieben, hat sich das (wieder) geändert. Wer kann mir auf die Sprünge helfen?

V 7.3.7.2 (x64)
Dateianhänge
RESTART.JPG
RESTART.JPG (95.29 KiB) 659 mal betrachtet

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Autowert ändern mit firebird

Beitrag von RobertG » Do 5. Jan 2023, 08:29

Zuerst einmal zum Autowert. Da hat sich bei Firebird inzwischen etwas getan. Das geht jetzt in Base auch mit

Code: Alles auswählen

ALTER TABLE "Tabellenname"
ALTER "ID" RESTART WITH <letzter_Feldwert>;
Es wird beim nächsten Mal dann der Wert genommen, der dem angegebenen Wert folgt.

Die Meldung *Cursor is not open habe ich noch nie gelesen. Gebe ich den Wert '2023001' in den Code für die Sequenz (ALTER SEQUENZ …) ein, so schreibt bei mir die Tabelle den nächsten Wert als ersten Wert: '2023002'.

Ist bei Dir vielleicht die Datenbankdatei noch nicht gestartet? Gehe zuerst in die Tabellenansicht und starte danach Extras → SQL …
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

Ruedi
Beiträge: 7
Registriert: Di 14. Apr 2020, 10:31

Re: Autowert ändern mit firebird

Beitrag von Ruedi » Fr 6. Jan 2023, 16:19

Funktioniert!
Damit die Fehlermeldung *Cursor is not open nicht kommt, muss das "Kästchen" SQL-Befehl direkt ausführen angekreuzt sein, das "Kästchen" Ausgabe der Anweisung Select ... nicht. Das habe ich zwar auch schon probiert, hatte aber vermutlich einen andern Fehler gemacht.
Das ist ganz brauchbar so, ich hoffe, dass es nächstes Jahr noch gleich funktioniert ;-),
Danke für deine Unterstützung.
Ruedi

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten