Seite 1 von 1
Automatisches Generieren komplexer Schlüssel [gelöst]
Verfasst: Do 22. Dez 2022, 12:11
von Susi93
Hallo zusammen,
ich übernehme gerade eine Datenbank aus Excel, die ich in Base überführe.
Diese haben eine Form wie z.B. "ace597b3-717c-4a65-990c-e9fd0ec0c2a0".
Wie heißt diese Form? Und wie kann ich sie bei jedem neu angelegten Eintrag in die Tabelle automatisch erstellen lassen?
Danke!
Re: Automatisches Generieren komplexer Schlüssel
Verfasst: Do 22. Dez 2022, 15:17
von Freischreiber
Hallo Susi,
googel mal UUID bzw. GUID. So sieht das jedenfalls aus. Dafür gibt es auch Generatoren. Ob direkt unter LibreOffice, weiß ich nicht.
Gruß
Freischreiber
Re: Automatisches Generieren komplexer Schlüssel
Verfasst: Do 22. Dez 2022, 16:17
von RobertG
Firebird kann das:
Code: Alles auswählen
SELECT UUID_TO_CHAR(GEN_UUID()) AS "UUID" FROM "RDB$DATABASE"
Das Feld muss dann natürlich ein VARCHAR-Feld sein, das diesen Schlüssel aufnimmt.
Du könntest so etwas mit Hilfe einer Abfrage eventuell innerhalb eines Formulars vorbelegen, wenn es sich nicht um den Primärschlüssel handelt. Mittels Makros geht es natürlich auf jeden Fall.
Re: Automatisches Generieren komplexer Schlüssel
Verfasst: Do 12. Jan 2023, 17:31
von Susi93
Das Verlegen der Datenbank zu Base klappt immer besser, ich mache einige Fortschritte.
Vielleicht könnt ihr mir noch bei ein paar kleineren Dingen helfen, für die ich nicht einen eigenen Thread aufmachen möchte:
Wie schaffe ich es, dass bei jedem neuen Datensatz, der über ein Formular angelegt wird, ein Wert (Zahl für Datensatz) um 1 erhöht wird?
Wie schaffe ich es über eine Formulareingabe, den Wert von zwei Spalten zu multiplizieren und in eine dritte Spalte einzugeben (z.B. Stundensatz x Arbeitsstunden = Honorar)?
Wie kann ich über das Formular ein Datum über eine Kalenderanzeige eingeben?
Gibt es eine Möglichkeit, ein Datum nach Berichterstellung automatisch umzustellen (d.h. ich erstelle eine Rechnung, und der Status eines Projekts geht von "nicht in Rechnung gestellt" in "in Rechnung gestellt" über)?
Ich nehme an, dass dies alles über SQL geht, ich habe aber davon (noch) wenig Erfahrung.
Danke für die Hilfe!
Re: Automatisches Generieren komplexer Schlüssel
Verfasst: Do 12. Jan 2023, 17:49
von RobertG
Zum automatisch ansteigenden Wert: Das Feld muss natürlich ein Zahlenfeld, am besten INTEGER sein.
Wenn Du die interne HSQLDB nutzt klappt es, indem Du die Tabelle zum Bearbeiten öffnest und in den Feldeigenschaften (unten im Editor) zu dem entsprechenden Feld Auto-Wert einstellst.
Bei Firebird ist die Integration in die GUI nicht so gut. Da müsstest Du eine neue Tabelle erstellen, die eben diesen Auto-Wert hat.
Wenn Du Werte multiplizieren willst, so mache dies über eine Abfrage. Der Nachteil ist natürlich, dass Du den Wert nicht direkt während der Eingabe angezeigt bekommst. Nutzt Du aber ein Tabellenkontrollfeld, dann hast Du direkt einen Blick auf den Wert, wenn Du die Zeile verlässt.
Also den Abfrageeditor öffnen, alle Felder der Tabelle dort hinein und einfach die Namen der beiden Felder, die Multipliziert werden sollen, mit einem '*' verknüpft dazu packen. Das sieht dann in dem direkten SQL so aus:
Code: Alles auswählen
SELECT "ID", "Anzahl", "Preis", "Anzahl" * "Preis" AS "E_Preis" FROM "Einkauf"
Die Abfrage muss auf jeden Fall den Primärschlüssel der Tabelle enthalten. Sonst kannst mit der Abfrage als Basis im Formular keine Daten ändern.
Datumsanzeige zum Auswählen: Du musst ein "Datumsfeld" haben - kein "Formatiertes Feld". In den allgemeinen Eigenschaften gibt es die Möglichkeit, "Aufklappbar" zu wählen.
Wenn Du nach einer Berichtserstellung etwas automatisch erzeugen willst, dann kommst Du um Makros nicht herum. Deswegen: Zuerst die kleinen Schritte, dann der nächste größere Schritt. Und falls Dir die Informationen ausgehen:
Lade Dir einfach das Handbuch runter. Dann brauche ich nur auf die entsprechenden Seiten zu verweisen.
https://de.libreoffice.org/get-help/documentation/
Re: Automatisches Generieren komplexer Schlüssel
Verfasst: Fr 13. Jan 2023, 08:58
von Susi93
Ja, es gibt noch einiges zu tun, aber ich bin froh, nicht mehr von anderen Projektmanagement-Tools abhängig zu sein.
Wegen der automatischen Erhöhung: Wenn ich "AutoWert" aktiviere, wird die Spalte "Nummer" zu einem Primärschlüssel, und ich bekomme die Meldung, dass ein Speichern nicht möglich ist. Wie kann ich das verhindern?
Re: Automatisches Generieren komplexer Schlüssel
Verfasst: Fr 13. Jan 2023, 09:41
von RobertG
Wenn Du schon einen Primärschlüssel hast, dann macht der AutoWert keinen Sinn. Was möchtest Du erreichen? Und: Mit welcher Datenbank arbeitest Du? Es gibt intern die HSQLDB und Firebird, also schon 2 Datenbanktypen in einer Base-Datei zur Auswahl.