Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Treeview Steuerelement Frage

Begonnen von silentwolf, August 08, 2011, 09:54:20

⏪ vorheriges - nächstes ⏩

silentwolf

Hallo an alle :)
bin wieder mal hier seit langen und hab schon wieder eine Frage.
Ich habe ein Treeview Steuerelement erstellt in dem ich Kunden Nummern darstelle und deren dazugehörigen Rechnungen anzeige.
Soweit so gut.
Nun habe ich zwei Unterformulare erstellt eines subfrmKunden (alle Daten aus der tblKunden) und eines subfrmRechnungen (alle Daten aus tblRechnungen)

Dazu zwei textboxen txtKunden und txtRechnung

Die subfrmKunde
Verknüpfen nach txtKunden
Verknüpfen von Kun_id

SubfrmRechnung
Verknüpfen nach txtRechnung
Verknüpfen von Rech_id


Private Sub tvwKundenRechnung_Click()
    Dim nodSelected As MSComctlLib.Node ' a variable for the currently selected node
   
    Set nodSelected = Me.tvwKundenRechnung.SelectedItem ' get the currently selected node
   
    If nodSelected.Key Like "Rech=*" Then ' are we on a product node
        Me.txtRechnung = Mid(nodSelected.Key, 6)
        Me.subfrmRechnung.Visible = True
        Me.txtKunden = Null
        Me.subfrmKunde.Visible = False
    ElseIf nodSelected.Key Like "FirmenName=*" Then ' are we on a category node
        Me.txtKunden = Mid(nodSelected.Key, 5)
        Me.subfrmKunde.Visible = True
        Me.txtRechnung = Null
        Me.subfrmRechnung.Visible = False
    Else ' somehow this is neither a category or product node
        Me.txtRechnung = Null
        Me.subfrmRechnung.Visible = False
        Me.txtKunden = Null
        Me.subfrmKunde.Visible = False
    End If
   
End Sub


Das ist mein Code den ich aus dem Internet habe und auf meine form angepasst habe.
Wenn ich nun auf Rechnungen also den child Node anklicke sehe ich wie es auch sein sollte die subfrmRechnung und all die dazugehörigen Infos.

Also ich klicke an die Rechnungsnummer dann erscheint die Rechnungsnummer im txtRechnung und diese wiederum zeigt mir die subfrmRechnung an.
Wenn ich nun die KundenNummer anklicke dann zeigt es im txtKunde enFirmenName=101 an und die subfrmKunde wird dann nicht angezeigt.

Wenn ich aber die KundenNummer in das txtKunden selbst eingebe dann zeig mir die subfrm das richtige an.

Habe den Code schon einige male durchgeschaut und verglichen komme aber selbst leider nicht drauf wie es funktioniert.

Wäre Euch um eine Hilfe sehr dankbar.


Lg Albert



database

Hallo,

auf den ersten und auf den zweiten Blick scheint der Code schon in Ordnung zu sein.

Hast du 'hinter' dem txtKunden irgendwelchen Code laufen?

Ansonst kann ich nur vermuten dass vielleicht das UF-Objekt in deinem HF anders heißt als 'subfrmKunde'

silentwolf

Hallo Peter,
vielen Dank für Deine Antwort hab ich gar nicht gesehen!
Na ich hatte ein problem mit dem code das ich ausbessern musste :)
Jetzt funktioniert er ggg:)
Aber da hab ich schon wieder eine neue Frage und zwar würde ich jetzt gern eine weitere Tabelle hinzufügen..
Hab auch schon probiert aber hatte noch kein Glück


Private Sub CreateBillNodes()
  Dim rst As DAO.Recordset ' recordset for product data

  ' open the recordset for products
  Set rst = CurrentDb.TableDefs!tblRechnung.OpenRecordset

  ' loop through the rows in the recordset
  rst.MoveFirst
  Do Until rst.EOF
    Me.tvwKundenRechnung.Nodes.Add Relationship:=tvwChild, _
        Relative:="FirmenName=" & CStr(rst!Kun_id_f), _
        Text:=rst!RechNummer, Key:="Rech=" & CStr(rst!Rech_id)
               
    rst.MoveNext
  Loop
End Sub


Dieser Code ist für die zweite Tabelle die ich angefügt habe also tblKunde auf tblRechnungen.
Nun möchte ich tblRechDetails noch dazugeben.

So hätte ich es probiert aber leider kein Glück was ist den da falsch oder was habe ich vergessen??


Private Sub CreateInDetailNodes()
  Dim rst As DAO.Recordset ' recordset for product data

  ' open the recordset for products
  Set rst = CurrentDb.TableDefs!tblRechDetails.OpenRecordset

  ' loop through the rows in the recordset
  rst.MoveFirst
  Do Until rst.EOF
    Me.tvwKundenRechnung.Nodes.Add Relationship:=tvwChild, _
        Relative:="RechNummer=" & CStr(rst!Rech_id_f), _
        Text:=rst!RechNr, Key:="Rechnungsbetrag=" & CStr(rst!Rech_Det_id)
               
    rst.MoveNext
  Loop
'  rst.Close
'  Set rst = Nothing
End Sub


Leider kenn ich mich noch nicht so gut aus mit treeview codes drum steh ich etwas an.

Vielen Dank für Eure Hilfe

Lg Albert

database

Hallo Albert,

ich fürchte, da kann ich dir im Moment gar nicht viel helfen, ich müsste das selbst nachstellen.

Was mir aber auffällt ist - die Rechnungsdetails sind doch eine 'Untergruppe' der Rechnungen, welche aber scheinbar bereits eine 'Untergruppe' der Firmen sind - also wäre das praktisch ein 'tvwChildChild'

Gibt es da keine tiefere Hierarchie zum angeben?

Wenn ich deinen Code richtig interpretiere versuchst du nämlich die Rechnungsdetails direkt an die Kunden zu binden was natürlich kein gutes Ergebnis bringen wird.

ZitatNa ich hatte ein problem mit dem code das ich ausbessern musste
...möchtest du uns das verraten?  ;D

silentwolf

Hallo Peter,
danke für Deine Antwort!!
Ja es wäre dann wie Du sagst ein tvwChildChild wird den das so geschrieben??
Den es ist schon so wie Du sagst das es noch eine Unterhirachie von Rechnungen ist.
Vieleicht probiere ich es ja dann mit tvwChildChild oder??
Na ja nicht so schlimm hab ja noch einiges zu tun :)



Das problem war folgendes

'        Me.txtKunden = Mid(nodSelected.Key, 5) ........vorher
        Me.txtKunden.Value = nodSelected.Text ..........nachher


Danke aber erstmal wieder!!

Ciao


database

Hallo,

also tvwChildChild war ein von mir frei gewähltes Synonym für das, was es darstellen sollte ...  ;) :D ;D

Da müsste die Hilfe zum Treeview-Steuerelement mehr Auskunft dazu liefern, wie es mit Unter-Untergruppierungen zu betreiben ist.

vielleicht hilft dir aber auch schon das weiter:
http://www.developerfusion.com/article/77/treeview-control/2/

silentwolf

Danke Peter!!
Werde es mir gleich mal zu gemüte führen  ;D

Vielen Dank!!!