Probleme mit TreeViews

Hallo,
ich habe ein Formular mit einem Register erstellt. Auf der 1. Registerkarte habe ich ein TreeView und auf der 2. auch. Beim öffnen des Formulars werden beide mit Daten gefüllt. Das funktioniert auch.
Wenn ich aber jetzt vom ersten in den 2.Register wechsel, und dann wieder zurück in den 1., dann werden alle Daten des TreeViews noch einmal an dem Punkt eingefügt, an dem vorher der Fokus Stand.
Bsp:
Vor dem Wechsel

  1. Knoten
    1.1 Knoten
  2. Knoten
  3. Knoten(Hier steht der Fokus)
  4. Knoten

Nach dem Wechsel

  1. Knoten
    1.1 Knoten
  2. Knoten
  3. Knoten
  4. Knoten
    1.1 Knoten
  5. Knoten
  6. Knoten
  7. Knoten
  8. Knoten

Beim Wechsel auf den 2 Register passiert dann das Selbe.
Beim zurückwechseln dann wieder und nach 2 3 mal stürtzt das Programm ab.
Die Knoten sind nicht als Globale Variable deklariert und weder beim Wechseln der Registerkarte, noch beim OnActivate Ereignis oder sonst wann vom mir aktuallisiert.
Hatte jemand schon einmal das Problem und kann mit weiterhelfen?
Gruß
Christian

ich habe ein Formular mit einem Register erstellt. Auf der 1.
Registerkarte habe ich ein TreeView und auf der 2. auch. Beim
öffnen des Formulars werden beide mit Daten gefüllt. Das
funktioniert auch.
Wenn ich aber jetzt vom ersten in den 2.Register wechsel, und
dann wieder zurück in den 1., dann werden alle Daten des
TreeViews noch einmal an dem Punkt eingefügt, an dem vorher
der Fokus Stand.

Hi Christian,

passiert das auch wenn du ein neues Formular erstellst, dort das Treeview einfügst, ggfs mit Daten befüllst?

Gehts um VB? Welche Version.
Gehts um Vba? Welche Officeversion( 97=8.0, 2000=9.0,usw), welche Officesoftware(Excel,Word,usw), welche Version hat das Treeview Objekt(5.0,6.0,usw.) ?

Kannst du hier mal allen das TreeView betreffenden Code posten?

Kannst du alle Codes im Einzelschrittmodus überwachen, welcher wann ausgelöst wird und dann halt mal die Register wechseln?

Gruß
Reinhard

Ich benutze VBA in Access 97 (Muß ich auch, da das ein sehr komplexes Programm ist, dass nicht in eine neuere Version konvertiert werden kann, ohne dass jede Menge Probleme aufteten) TreeView Objekt ist 6.0.

Auch wenn ich ein neues Formular mit einem Register erstelle, dort zwei TreeViews einfüge und beim FormOpen diesen Code ausführe,

Me(„TreeView1“).Nodes.Add Key = „Test1“, Text:=„Test1“
Me(„TreeView1“).Nodes.Add Key = „Test2“, Text:=„Test2“
Me(„TreeView2“).Nodes.Add Key = „Test3“, Text:=„Test3“
Me(„TreeView2“).Nodes.Add Key = „Test4“, Text:=„Test4“
Me.Requery

werden die TreeViews beim Wechsel der Register falsch dargestellt und das Programm stürtzt dann ab.
Gruß
Christian

Hi Christian,

passiert das auch wenn du ein neues Formular erstellst, dort
das Treeview einfügst, ggfs mit Daten befüllst?

Gehts um VB? Welche Version.
Gehts um Vba? Welche Officeversion( 97=8.0, 2000=9.0,usw),
welche Officesoftware(Excel,Word,usw), welche Version hat das
Treeview Objekt(5.0,6.0,usw.) ?

Kannst du hier mal allen das TreeView betreffenden Code
posten?

Kannst du alle Codes im Einzelschrittmodus überwachen, welcher
wann ausgelöst wird und dann halt mal die Register wechseln?

Gruß
Reinhard

Hi Christian,

Ich benutze VBA in Access 97 (Muß ich auch, da das ein sehr
komplexes Programm ist, dass nicht in eine neuere Version
konvertiert werden kann, ohne dass jede Menge Probleme
aufteten) TreeView Objekt ist 6.0.

Sehr schön, endlihc mal eine Anfragerantwort mit der man perfekt was anfangen kann, ist leider oft nicht so, Danke.
Leider komme ich erst heute Abend an Access97.
Da ich verschiedene Officeversionen auf dem Rechner habe, habe ich z.B. bei dem TreeView die Versionen 5.0 und 6.0.
Ich dachte immer, da m.W. Office97 sich sein Vba aus Vb5.0 holte und ab Office2000 das Vba von VB6.0 entlehnt wurde, daß es für mich sicherer ist, wenn ich Office97 benutze das Control 5.0 zu benutzen, bei höheren Officeversionen dann das Control 6.0.
Aber ich konnte noch nie Probleme feststellen die dadurch entstanden, daß die Officeversion nicht zu der Controlversion passt.

Aber zu deiner Anfrage, ich weiß schon wodran das liegt *glaub*, auch wenn ich es vielleicht nicht in verständliche Worte fassen kann.

Auch wenn es in deinen Codes nicht ersichtlich oder gar geplant ist, deine geposteten Codezeilen werden mehrmals aufgerufen.

Deshalb setze mal auf die erste Codezeile einen Haltepunkt, und gehe dann von da mit F8 weiter, du wirst dich dann wundern daß andere Ereignisse wie Change oder Activate des Registers o.ä. und da der letzte Befehl, also das „End Sub“ deine Codezeilen aufrufen.

Und du kannst es m.E. nicht direkt verhindern. Zumindest kam ich auf keine Lösung dafür.
Wenn das jetzt keiner verstanden hat, grad wegen dem „End Sub“, naja nicht unerwartet :smile:

Auch wenn ich ein neues Formular mit einem Register erstelle,
dort zwei TreeViews einfüge und beim FormOpen diesen Code
ausführe,

Me(„TreeView1“).Nodes.Add Key = „Test1“, Text:=„Test1“
Me(„TreeView1“).Nodes.Add Key = „Test2“, Text:=„Test2“
Me(„TreeView2“).Nodes.Add Key = „Test3“, Text:=„Test3“
Me(„TreeView2“).Nodes.Add Key = „Test4“, Text:=„Test4“
Me.Requery

werden die TreeViews beim Wechsel der Register falsch
dargestellt und das Programm stürtzt dann ab.

Teste ich nachher.

Gruß
Reinhard

Hallo Reinhard

Ich habe die TreeViews mal in Unterformulare gepackt und siehe da, es geht.
Ist aber nicht gerade die Ideallösung.

Ich dachte immer, da m.W. Office97 sich sein Vba aus Vb5.0
holte und ab Office2000 das Vba von VB6.0 entlehnt wurde, daß
es für mich sicherer ist, wenn ich Office97 benutze das
Control 5.0 zu benutzen, bei höheren Officeversionen dann das
Control 6.0.

Bin ich gar nicht drauf gekommen.
Ich habe es jetzt mit 5.0 ausprobiert. Mein Problem beim Registerwechel besteht dann nicht mehr, allerdings bekomme ich allerlei Fehlermeldungen bei z.B. MouseOver, obwohl die einzige Funktion in meinem Formular das Form_Open ist und sich beim TreeView keine MouseOver Methode registrieren lässt. Ausserdem gibt es die Methoden TreeView_NodeClick und viele weitere nicht mehr.

Aber zu deiner Anfrage, ich weiß schon wodran das liegt
*glaub*, auch wenn ich es vielleicht nicht in verständliche
Worte fassen kann.

Auch wenn es in deinen Codes nicht ersichtlich oder gar
geplant ist, deine geposteten Codezeilen werden mehrmals
aufgerufen.

Deshalb setze mal auf die erste Codezeile einen Haltepunkt,
und gehe dann von da mit F8 weiter, du wirst dich dann wundern
daß andere Ereignisse wie Change oder Activate des Registers
o.ä. und da der letzte Befehl, also das „End Sub“ deine
Codezeilen aufrufen.

Nö, der Code wird nicht mehrmals aufgerufen.

Gruß
Christian

Hi Christian,

Ich habe die TreeViews mal in Unterformulare gepackt und siehe
da, es geht.
Ist aber nicht gerade die Ideallösung.

vielleicht ist es eine gute Idee diese Beitragsfolge in das Accessbrett verlegen zu lassen.
Der hiesige Mod (Rainer) könnte das tun oder veranlassen.
Die guten VB-Leute hier haben das sicher schon gelesen, können dir aber m.E. nicht helfen weil es wiederum m.E. ein reines Access-Problem ist.

Und, ich kann es nicht nachvollziehen.
Access97 auf WinXP, 1 Form mit einem Register, das Register hat Seite1 und Seite2,
jede Seite hat ein Treeview6.0 Objekt).

Die mdb ist hier runterladbar: http://www.hostarea.de/server-03/Maerz-0f34a8f460.zip
Hinweis, es ist KEINE zip, ändere die Endung auf mdb.
Änderung war wg. hostarea, die mögen keine mdbs.

und hat letztlich nur diesen Code:

Private Sub Form_Load()
ActiveXStr3.Nodes.Add Key:=„Test1“, Text:=„Test1“
ActiveXStr3.Nodes.Add Key:=„Test2“, Text:=„Test2“
ActiveXStr4.Nodes.Add Key:=„Test3“, Text:=„Test3“
ActiveXStr4.Nodes.Add Key:=„Test4“, Text:=„Test4“
Me.Requery
End Sub

Einziger Fehler ist, beim Öffnen der Form ist Seite1 aktiv, wechelt man zu Seite2, zeigt
diese ihr Treeview mit falschem Inhalt an (nur Test4).
Dies geschieht aber nur einmalig nach dem Öffnen, danach kann man beiliebig von Seite zu Seite
wechseln und die Anzeige stimmt jeweils.

Die Codeversuche im Anhang um diesen Fehler zu beheben brachten alle nix.

Warum es z.B. als ActiveXStr3 und nicht als TreeView1 benannt ist weiß ich nicht.

In Excel97 komme ich besser klar als mit Access, dort brachte eine Userform mit gleichem Aufbau
wie die Form in Access und mit diesem Code:
Private Sub UserForm_Initialize()
TreeView1.Nodes.Add Key:=„Test1“, Text:=„Test1“
TreeView1.Nodes.Add Key:=„Test2“, Text:=„Test2“
TreeView2.Nodes.Add Key:=„Test3“, Text:=„Test3“
TreeView2.Nodes.Add Key:=„Test4“, Text:=„Test4“
'me.Requery 'gibts in Excel nicht
End Sub
nur die Erkenntnis, das dort keinerlei Fehler auftreten.

Nö, der Code wird nicht mehrmals aufgerufen.

Kannst du mal eine Beispiele-mdb bastelen und irgendow hochladen, zB Hostarea, mußt sie vorher umbenennen, in xls,zip, sonstwas

Gruß
Reinhard

Private Sub RegisterStr0_Change()
'MsgBox „regchance“
Form.Requery
End Sub

Private Sub RegisterStr0_Click()
MsgBox „regclick“
End Sub

Private Sub Seite1_Click()
MsgBox „Seite1click“
Form.Requery
Seite1.Requery
End Sub

Private Sub Seite1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MsgBox „Seite1click“
Form.Requery
Seite1.Requery
End Sub

Private Sub Seite2_Click()
Form.Requery
MsgBox „Seite2click“
Seite2.Requery
End Sub

Ich dachte immer, da m.W. Office97 sich sein Vba aus Vb5.0
holte und ab Office2000 das Vba von VB6.0 entlehnt wurde, daß
es für mich sicherer ist, wenn ich Office97 benutze das
Control 5.0 zu benutzen, bei höheren Officeversionen dann das
Control 6.0.

Bin ich gar nicht drauf gekommen.
Ich habe es jetzt mit 5.0 ausprobiert. Mein Problem beim
Registerwechel besteht dann nicht mehr, allerdings bekomme ich
allerlei Fehlermeldungen bei z.B. MouseOver, obwohl die
einzige Funktion in meinem Formular das Form_Open ist und sich
beim TreeView keine MouseOver Methode registrieren lässt.
Ausserdem gibt es die Methoden TreeView_NodeClick und viele
weitere nicht mehr.

Aber zu deiner Anfrage, ich weiß schon wodran das liegt
*glaub*, auch wenn ich es vielleicht nicht in verständliche
Worte fassen kann.

Auch wenn es in deinen Codes nicht ersichtlich oder gar
geplant ist, deine geposteten Codezeilen werden mehrmals
aufgerufen.

Deshalb setze mal auf die erste Codezeile einen Haltepunkt,
und gehe dann von da mit F8 weiter, du wirst dich dann wundern
daß andere Ereignisse wie Change oder Activate des Registers
o.ä. und da der letzte Befehl, also das „End Sub“ deine
Codezeilen aufrufen.

Nö, der Code wird nicht mehrmals aufgerufen.

Gruß
Christian

[MOD] …
Hallo,

vielleicht ist es eine gute Idee diese Beitragsfolge in das
Accessbrett verlegen zu lassen.

sagt Bescheid. Wenn Ihr umziehen möchtet, bitte ich das Team um Verschieben und lösche ab hier …

Gruß, Rainer

vielleicht ist es eine gute Idee diese Beitragsfolge in das
Accessbrett verlegen zu lassen.

sagt Bescheid. Wenn Ihr umziehen möchtet, bitte ich das Team
um Verschieben und lösche ab hier …

Hallo Rainer,

sicher ist Christian grad unpäßlich, verheiratet, verdunstet, verhaftet, verduftet, verwirrt, vertigmitderWelt o.ä. sonst hätte er sicher schon reagiert *ansGuteglaub*

Ich sehe keinen Handlungsbedarf diese Beitragsfolge umzusetzen, eher den, sie zu löschen *NichtimmeransGuteglaub*

Gruß
Reinhard

Geduld
Hallo Reinhard,

Ich sehe keinen Handlungsbedarf diese Beitragsfolge
umzusetzen, eher den, sie zu löschen *NichtimmeransGuteglaub*

das wird schon einen Grund haben, warten wir mal noch. :smile:

Gruß, Rainer