0

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

null
    • Rafael_Sanchis
    • vor 3 Tagen
    • Gemeldet - anzeigen

    I don't know if this help.

    • Frank_Dressler
    • vor 22 Stunden
    • Gemeldet - anzeigen

    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

    • Ninox-Professional
    • planoxpro
    • vor 22 Stunden
    • Gemeldet - anzeigen

    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.

    • mirko3
    • vor 4 Stunden
    • Gemeldet - anzeigen

    Hallo Frank. Es ist nicht das was du suchst, aber vielleicht hilft es dir weiter beim Experimentieren für eine Lösung. Mirko

    https://forum.ninox.de/t/h7yls2x/hierarchische-liste

Content aside

  • vor 4 StundenZuletzt aktiv
  • 4Antworten
  • 39Ansichten
  • 4 Folge bereits