0

Probleme mit einer Baumstruktur

Hallo zusammen,

 

ich habe Probleme beim Aufbau bzw. beim Verwenden einer Baumstruktur.

 

Ich lege eine Tabelle Locations an mit einem einzigen Feld Location und einer Referenz auf Locations. Die Referenz nenne ich Parent. Schon bin ich in der Lage einen mehrstufigen Baum aufzubauen:

[leer]   - Parent1

Parent – Child1

Child1 – Child1.1

Parent1 – Child2

[leer] – Parent2

Usw. …

 

Im nächsten Schritt möchte ich diese Tabelle referenzieren und den Blättern Dinge zuordnen. Im obigen Beispiel sind die Namen eindeutig, in meiner echten Tabelle haben die Kinder aber mehrmals den gleichen Namen.

Versuche ich nun diese Tabelle zu referenzieren (Feld Location) erhalte ich eine Liste in der Namen mehrfach vorkommen. D.h. ich weiß nicht welcher Eintrag der Richtige ist. Dies versuche ich nun zu umgehen, indem ich in die o.a. Tabelle ein weiteres Feld FullLocation einfüge. Da möchte ich den vollen Pfad für einen Eintrag reinschreiben, z.B. „Parent1 – Child1 – Child1.1 -Child1.1.1“.

 

Eigentlich will ich über alle Datensätze drüber laufen, komme aber in eine Endlosschleife. Deswegen versuche ich es über einen Button in einem Formular für einen einzelnen Datensatz und laufe aber auch da dauernd auf eine Endlosschleife.

 

let currentLocation := record(Locations,Nr);

let langName := currentLocation.Location;

while currentLocation.Parent.Location != "" do

              langName := currentLocation.Parent.Location + " - " + langName;

              var currentLocation := currentLocation.Parent.Location;

              void

end;

fullLocation := langName

 

1. Ich hole mir einen Zeiger auf den aktuellen Datensatz
2. Und befülle eine Variable mit der aktuelle location
3. Eine Schleife mit der ich im Baum nach oben laufen möchte (oben bin ich, wenn kein Parent mehr gepflegt ist.
4. Ich erweitere die Variable linksseitig um die Parentlocation
5. Und setze den Zeiger eins nach oben
6. Void schreibt mir das System rein (ein Zeichen dass was mit der Schleife falsch läuft???)
7. Ende (ohne Semikolon geht es hier auch nicht weiter)
8. Ich schreibe die Variable in mein Datensatzfeld
 

 

Hat mir jemand einen Tipp was ich falsch mache? Oder eine ganz andere Idee?

 

Vielen Dank und viele Grüße, ThomasD.

1 Antwort

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Thomas,

    Versuch mal folgende Formel in ein Berechnungsfeld zu packen:

    ---

    var myNR := number(this.Nr);
    var longName := record(Location,myNR).Location;
    while record(Location,myNR).Parent do 
    myNR := number(record(Location,myNR).Parent.Nr);
    longName := record(Location,myNR).Location + " - " + longName
    end
    ;
    longName

    ---

    alternativ kannst du auch die Formel für den Button verwenden:

    ---

    var myNR := number(this.Nr);
    var longName := record(Location,myNR).Location;
    while record(Location,myNR).Parent do 
    myNR := number(record(Location,myNR).Parent.Nr);
    longName := record(Location,myNR).Location + " - " + longName
    end
    ;
    fullLocation:=longName

    ---

    Leo

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 1Antworten
  • 890Ansichten