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
-
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