Textdokumente mit mehreren Gliederungsebenen verwalten
Ich möchte etwas wie folgt verwalten:
Dokument: "Datenschutzrichtlinie"
├── 1 Einleitung
│ ├── 1.1 Hintergrund
│ └── 1.2 Zielsetzung
├── 2 Datenschutz
│ ├── 2.1 Begriffe
│ │ └── 2.1.1 Definitionen
│ └── 2.2 Rechtsgrundlagen
Ich habe dazu in einer Test-Datenbank zwei Tabellen erzeugt:
- "dokumente" mit den Feldern
- Titel - Text
- Beschreibung - Text mehrzeilig
- und "abschnitte" mit den Feldern:
- Titel - Text
- Ebene - Zahl (Gliederungstiefe (1 = Kapitel, 2 = Unterkapitel, etc.)
- Position - Zahl (Sortierreihenfolge innerhalb Ebene)
- Inhalt - Text mehrzeilig
- Gliederungsnummer - Formel zur automatischen Erzeugung der Gliederung
- Dokument - Referenz auf dokumente
- Übergeordneter Abschnitt - rekursive Referenz auf "abschnitte".
Ich möchte mit einem Skript erreichen, dass aus den Vorgaben die passende Gliederungsnummer automatisch in das Feld "Gliederungsnummer" eingefügt wird.
Variante 1:
let parent := this.'Übergeordneter Abschnitt';
if parent then
parent.'Gliederungsnummer' + "." + number(Position)
else
number(Position)
end
Variante 2:
let abschnitt := this;
let pfad := number(abschnitt.Position);
let parent := abschnitt.'Übergeordneter Abschnitt';
while parent do
pfad := number(parent.Position) + "." + pfad;
parent := parent.'Übergeordneter Abschnitt';
end;
pfad + "."
Funzt beides nicht - bekomme immer eine type-mismatch meldung.
Wer kann helfen?
4 Antworten
-
I don't know if this help.
-
Hi Rafael,
quite nice stuff - but not real simple :) . I've to check, how you've constructed the whole database structures. I'm not shure, but I think youre levels labels aren't dynamic ones. I'll give you an answer after I checked the structures to understand.
THX
-
Hallo, so ganz spontan würde ich vermuten, dass es daran liegt, dass mit dem
parent.'Gliederungsnummer' + "." + number(Position)
ein String erzeugt wird, während im else-Zweig ein numerischer Wert eingesetzt wird. Ein Formelfeld kann aber nur ein Datenformat darstellen, nicht mal das eine, mal das andere. Ich würde versuchen, das auf Strings umzubauen und sie für für die Berechnung mit number() temporär in eine Zahl zu konvertieren.
-
Hallo Frank. Es ist nicht das was du suchst, aber vielleicht hilft es dir weiter beim Experimentieren für eine Lösung. Mirko
Content aside
- vor 4 StundenZuletzt aktiv
- 4Antworten
- 39Ansichten
-
4
Folge bereits