Hi Tomali,
weil mein Proggi gerade in der IDE liegt, kurzer Auszug daraus:
Initialisierung des Treeview:
With otv
.Nodes.Clear
.LineStyle = tvwTreeLines
Set xNode = .Nodes.Add(, , "Root", "Aktueller Dienst", 5)
.Nodes.Add xNode, tvwChild, "FD", "Frühdienst (" + B + ")", 4
.Nodes.Add xNode, tvwChild, "SD", "Spätdienst (" + A + ")", 4
.Nodes.Add xNode, tvwChild, "ND", "Nachtdienst (" + B + ")", 4
.Nodes.Add xNode, tvwChild, "TD", "Tagesdienst", 4
.Nodes.Add xNode, tvwChild, "ZD", "Zus.-/Erg.-dienst", 4
.Nodes.Add xNode, tvwChild, "BD", "Bereitschaft", 4
.Nodes.Add xNode, tvwChild, "AB", "Abwesend", 4
.Nodes.Add xNode, tvwChild, "IR", "Nicht regulärer Dienst", 4
xNode.Expanded = True
End With Du Erkennst "Root" das ist der oberste Knoten, die restlichen sind Childs - also Subnodes. Diese "Subnodes" wiederum erhalten dann zur Programmlaufzeit Einträge. Die 4 am Ende des Add-Strings besagt, dass Image Nr. 4 aus einer Imagelist zugeteilt wird! Wichtig ist aber der Eintrag "Key". Über diesen Schlüssel erfolgt später die Zuteilung der Subnodes:
Public Sub FillTreeView(ByVal sdatum As String, otv As TreeView)
Dim SQL As String
Dim rsFilter As Recordset
Dim delTyp As StaerkeTyp
Dim wname As String
Dim ynode As Node
Dim verg As Variant
tFD = delTyp
tSD = delTyp
tND = delTyp
tZD = delTyp
tTD = delTyp
tBD = delTyp
mdStart.ClearTreeview otv
SQL = "SELECT * From Planung Where Tag = #" & Format(CDate(sdatum), _
"m-d-yy") + "#"
OpenDB
Set rs = GetRecordSet(SQL)
If Not rs.EOF Then
SetFilter rs, "FD", otv
SetFilter rs, "SD", otv
SetFilter rs, "ND", otv
SetFilter rs, "TD", otv
SetFilter rs, "ZD", otv
SetFilter rs, "BD", otv
End If
wname = Left(WeekdayName(Weekday(CDate(sdatum), vbUseSystemDayOfWeek), , _
vbUseSystemDayOfWeek), 2)
SQL = "SELECT * From Vorgabe Where Dienst = 'ED' And Tag = '" & wname & "'"
Set ynode = otv.Nodes("IR")
Set rs = GetRecordSet(SQL)
Do While Not rs.EOF
otv.Nodes.Add ynode, tvwChild, , CStr(Format(rs!Von, "hh:mm")) & " - " & _
CStr(Format(rs!Bis, "hh:mm")) & ": " & rs!Staerke
verg = Split(rs!Staerke, "/")
rs.MoveNext
Loop
CloseDB
End Sub
Private Sub SetTreeViewImage(ByVal sFunk As String, ByVal sKey As String, ByVal _
sName As String, oTreeV As TreeView, ByVal sdienst As String)
Dim ynode As Node
Set ynode = oTreeV.Nodes(sKey)
Select Case UCase(sFunk)
Case "ALEITER"
oTreeV.Nodes.Add ynode, tvwChild, , sName, 6
FillTypen sdienst, "A"
Case "DGF"
oTreeV.Nodes.Add ynode, tvwChild, , sName, 1
FillTypen sdienst, "B"
Case "DGFSTELLV."
oTreeV.Nodes.Add ynode, tvwChild, , sName, 2
FillTypen sdienst, "C"
Case "SB"
oTreeV.Nodes.Add ynode, tvwChild, , sName, 3
FillTypen sdienst, "C"
Case "ZANGEST."
oTreeV.Nodes.Add ynode, tvwChild, , sName, 4
FillTypen sdienst, "D"
End Select
End Sub
Private Sub SetFilter(ors As Recordset, ByVal sD As String, otv As TreeView)
Dim rsFilter As Recordset
ors.Filter = "Dienst = '" & sD & "'"
ors.Sort = "Funktion,Name"
Set rsFilter = ors.OpenRecordset(dbOpenDynaset)
Do While Not rsFilter.EOF
SetTreeViewImage rsFilter!Funktion, sD, rsFilter!Name, otv, sD
rsFilter.MoveNext
Loop
End Sub
Private Function GetRecordSet(ByVal SQL As String) As Recordset
Set GetRecordSet = db.OpenRecordset(SQL, dbOpenDynaset)
End Function Prinzip deutlich?
cu
Lordchen |