PDA

Vollständige Version anzeigen : Treeview Problem mit Key's


fadass
05.09.2011, 06:39
Hallo zusammen,ich benutze auf einem
Formular ein Treeview mit dem ich Daten aus einer Datenbank anzeigen lassen will. Irgendwie komme ich aber mit den Key's nicht ganz klar.
Auf der 2. Ebene erzeuge ich Notes mit folgender Zeile:
Set oNode = .Nodes.Add("Aktiv", tvwChild, rs2(0).Value, rs2(0))
Dabei ist der Feldinhalt gleichzeitig auch der Key.

Später möchte ich dann eine 3. Ebene mit folgender Zeile Füllen:
Set oNode = .Nodes.Add(rs2(0), tvwChild, Left(rs1(1), 8), Left(rs1(1), 8) & " " & rs1(0))

Dabei bekomme ich aber immer die Fehlermeldung: Schlüssel nicht gefunden.
Die Inhalte der Variable rs2(0) habe ich geprüft. Es ist korrekt "LA-00053657"

Hat jemand eine Idee wo das Problem liegt?

AKTools
05.09.2011, 07:44
Hi fadass,

du musst dich beim einfügen von Child-Nodes immer auf das Parent-Node beziehen. In diesem Fall, wenn ich das richtig interpretiere, nutzt du ein Recordset!?


Set oNode = .Nodes.Add(rs2(0),tvwChild, Left(rs1(1), 8), Left(rs1(1), 8) & " " & rs1(0))



Set oNode = .Nodes.Add(DarüberliegendesNodeXY,tvwChild, Left(rs1(1), 8), Left(rs1(1), 8) & " " & rs1(0))


Dazu würde ich dir noch empfehlen, bei jedem Key noch folgendes anzuhängen ".Nodes.Count" damit bekommst du auf jeden Fall immer einen eindeutigen Key!

fadass
05.09.2011, 07:53
Hallo AKTools,

stimmt. Ich nutze ein Recordset. Nach meiner Interprätation mache ich es auch genau so wie du es beschreibst.


Mit dieser Zeile wird der Vater erzeugt. Der Schlüssel dafür ist der Inhalt von rs2(0).
Set oNode = .Nodes.Add("Aktiv", tvwChild, rs2(0), rs2(0))
Hiermit soll dann für diesen Vater ein Ableger erzeugt werden. Den Bezug zum Vater stelle ich meiner Meinung nach korrekt her. Gefunden wird er aber trotzdem nicht.
Set oNode = .Nodes.Add(rs2(0), tvwChild, Left(rs1(1), 8), Left(rs1(1), 8) & " " & rs1(0))

AKTools
05.09.2011, 08:28
Hi fadass,

mensch ich stell gerade fest, man lernt nie aus! :grins: Ich wußte bisher nicht, das man sich im ersten Argument der Add-Methode auch auf einen Nodeschlüssel bezeiehen kann. Ich habe bisher immer das Objekt benutzt.

Ok aber ich glaube ich habe den Fehler trotzdem gefunden. Mach mal um den Schlüssel des Parent-Node Anführungszeichen.
Set oNode = .Nodes.Add("rs2(0)", tvwChild, Left(rs1(1), 8), Left(rs1(1), 8) & " " & rs1(0))

fadass
05.09.2011, 12:51
Hi AK,

bisher kannte ich nur diese Methode (beschäftige mich erst seit ein paar Tagen mit dem Treeview und das erste Tutorial das ich gefunden habe nutzte halt diese Variante...). Hast du evtl. ein paar Codeschnipsel für das objektorientierte Vorgehen?

Den Fehler habe ich jetzt gefunden. Er liegt nicht im Key des Vaters, sondern im neu zu erstellenden Child. die "left" funktion funktioniert da nicht. Lasse ich die weg und benutze den Kompletten String von rs1(0) funktioniert es. Warum ist mir allerdings auch ein Rätzel...