Option Compare Database
Option Explicit
Dim rsw As New RecordsetWrapper
Dim Li As Long
Public Function TV_FunctionSelect(TV_FunctionName As TV_FunctionName, _
Optional objtree As TreeView, _
Optional TV_rswOpen As String, _
Optional TV_rswCriteria As String, _
Optional strParentID As String, _
Optional strID As String, _
Optional strText As String, _
Optional strKey As String, _
Optional frmName As String, _
Optional objName As String, _
Optional ExpandNode As Boolean, _
Optional TVassigned_rswOpen As String, _
Optional TVassigned_rswCriteria As String, _
Optional TVassigned_rswCriteriaID As String, _
Optional TVassigned_rswCriteriaField As String, _
Optional IDCriteria As Long) As Boolean
Select Case TV_FunctionName
Case 1 'TV_Populate
If TVassigned_rswOpen <> "" Then TV_rswOpen = TVassigned_rswOpen
If TVassigned_rswCriteria <> "" Then TV_rswCriteria = TVassigned_rswCriteria
TV_Populate objtree, TV_rswOpen, strParentID, strID, strText, strKey, ExpandNode, TV_rswCriteria
Case 2 'TV_CheckNodesChild
'TV_CheckNodesChild nodChild, nodChecked
Case 3 'TV_CheckNodesParent
'TV_CheckNodesParent nodParent, nodChecked
Case 4 'TV_CheckAssignedOnes
TV_CheckAssignedOnes objtree, TVassigned_rswOpen, TVassigned_rswCriteria, TVassigned_rswCriteriaField, strKey
Case 5 'TV_UnSelectAllNodes
TV_UnSelectAllNodes objtree
Case 6 'TV_FindSelectedNode
TV_FindSelectedNode objtree
Case 7 'TV_NodesClear
TV_NodesClear objtree
Case 8 'Assign
TV_Assign objtree, TVassigned_rswOpen, TVassigned_rswCriteria, TVassigned_rswCriteriaField, strKey
Case 9 'Assigned Add
If TVassigned_rswOpen <> "" Then TV_rswOpen = TVassigned_rswOpen
If TVassigned_rswCriteria <> "" Then TV_rswCriteria = TVassigned_rswCriteria
TV_AssignedAdd TV_rswOpen, IDCriteria, TVassigned_rswCriteriaField
Case 10 'Assigned Delete
If TVassigned_rswOpen <> "" Then TV_rswOpen = TVassigned_rswOpen
If TVassigned_rswCriteria <> "" Then TV_rswCriteria = TVassigned_rswCriteria
TV_AssignedDelete TV_rswOpen, TV_rswCriteria
End Select
End Function
Public Function TV_Populate(objtree As TreeView, _
TV_rswOpen As String, _
strParentID As String, _
strID As String, _
strText As String, _
strKey As String, _
Optional ExpandNode As Boolean, _
Optional TV_rswCriteria As String = "1=1")
'ENUM 1 POPULATE
If rsw.OpenRecordset(TV_rswOpen, TV_rswCriteria) Then
TV_PopulateBranch objtree:=objtree, rsw:=rsw, tvKey:=strKey, tvParentID:=strParentID, tvID:=strID, _
tvText:=strText, tvExpandNodes:=ExpandNode
End If
TV_Populate = True
End Function
Sub TV_PopulateBranch(objtree As TreeView, _
rsw As RecordsetWrapper, _
tvKey As String, _
tvParentID As String, _
tvID As String, _
tvText As String, _
Optional tvExpandNodes As Boolean, _
Optional tvVariantAdditional As Variant)
'OK
Dim rswBookmark As String
Dim strKey As String
Dim strText As String
Dim strCriteria As String
Dim nodParent As Node
Dim nodCurrent As Node
If IsMissing(tvVariantAdditional) Then ' Root Branch.
strCriteria = tvParentID & " Is Null"
Else ' Search for records pointing to parent.
strCriteria = BuildCriteria(tvParentID, rsw.Recordset.Fields(tvParentID).Type, "=" & tvVariantAdditional)
Set nodParent = objtree.Nodes(tvKey & tvVariantAdditional)
nodParent.Expanded = tvExpandNodes
End If
rsw.Recordset.FindFirst strCriteria
Do Until rsw.Recordset.NoMatch
strText = rsw.Recordset(tvText)
strKey = tvKey & rsw.Recordset(tvID)
If Not IsMissing(tvVariantAdditional) Then 'add new node to the parent
Set nodCurrent = objtree.Nodes.Add(nodParent, tvwChild, strKey, strText)
Else ' Add new node to the root.
Set nodCurrent = objtree.Nodes.Add(, , strKey, strText)
End If
nodCurrent.Expanded = tvExpandNodes
rswBookmark = rsw.Recordset.Bookmark
TV_PopulateBranch objtree, rsw, tvKey, tvParentID, tvID, tvText, tvExpandNodes, rsw.Recordset(tvID)
rsw.Recordset.Bookmark = rswBookmark ' Return to last place and continue search.
rsw.Recordset.FindNext strCriteria
Loop
exitTV_PopulateBranch:
Exit Sub
End Sub
Public Function TV_CheckNodesChild(ByRef nodChild As Node, ByVal nodChecked As Boolean) As Boolean
'YOU MAY CANCEL UP TO YOUR POPULATE CONDITION TOGETHER CheckNodesToParent
'OK
Dim oNode As Node
If nodChecked Then Exit Function
Set oNode = nodChild.Child
Do While Not oNode Is Nothing
oNode.Checked = nodChecked
If TV_CheckNodesChild(oNode, nodChecked) Then
End If
Set oNode = oNode.Next
Loop
TV_CheckNodesChild = True
End Function
Public Function TV_CheckNodesParent(ByRef nodParent As Node, ByVal nodChecked As Boolean) As Boolean
'OK
If nodParent.Checked = False Then Exit Function
Do While Not nodParent.Parent Is Nothing
nodParent.Parent.Checked = nodChecked
Set nodParent = nodParent.Parent
Loop
TV_CheckNodesParent = True
End Function
Public Function TV_CheckAssignedOnes(objtree As TreeView, _
TVassigned_rswOpen As String, _
TVassigned_rswCriteria As String, _
TVassigned_rswCriteriaField As String, _
strKey As String) As Boolean
'OK
Dim Li As Long
Dim IDCriteria As Integer
Dim TV_IDCriteria As Long
TV_IDCriteria = Len(strKey)
If rsw.OpenRecordset(TVassigned_rswOpen, TVassigned_rswCriteria) Then
If rsw.Recordset.BOF And rsw.Recordset.EOF Then Exit Function
If rsw.MoveFirst Then
Do While Not rsw.Recordset.EOF
rsw.Bookmark
For Li = 1 To TV_ListCount(objtree)
IDCriteria = Mid(objtree.Nodes.Item(Li).Key, TV_IDCriteria + 1, Len(objtree.Nodes.Item(Li).Key))
If IDCriteria = rsw.Recordset.Fields(TVassigned_rswCriteriaField).Value Then
objtree.Nodes.Item(Li).Checked = True
Exit For
Else
End If
Next
rsw.MoveNext
Loop
End If
End If
TV_CheckAssignedOnes = True
End Function
Public Function TV_UnSelectAllNodes(objtree As TreeView) As Boolean
'OK
Dim Li As Long
For Li = 1 To TV_ListCount(objtree)
If objtree.Nodes.Item(Li).Selected = True Then
objtree.Nodes.Item(Li).Selected = False
End If
Next
TV_UnSelectAllNodes = True
End Function
Public Function TV_FindSelectedNode(objtree As TreeView) As String
Dim Li As Long
For Li = 1 To TV_ListCount(objtree)
If objtree.Nodes.Item(Li).Selected = True Then
TV_FindSelectedNode = objtree.Nodes.Item(Li).Key
Exit For
Else
End If
Next
End Function
Public Function TV_Assign(objtree As TreeView, _
TVassigned_rswOpen As String, _
TVassigned_rswCriteria As String, _
TVassigned_rswCriteriaField As String, _
strKey As String) As Boolean
Dim IDCriteria As Long
If rsw.OpenRecordset(TVassigned_rswOpen, TVassigned_rswCriteria) Then
With rsw.Recordset
If .BOF And .EOF Then GoTo UpdateAll
Do While Not rsw.Recordset.EOF
If TV_AssignedDelete(TVassigned_rswOpen, TVassigned_rswCriteria) Then rsw.MoveNext
Loop
End With
End If
UpdateAll:
For Li = 1 To TV_ListCount(objtree)
IDCriteria = Mid(objtree.Nodes.Item(Li).Key, Len(strKey) + 1, Len(objtree.Nodes.Item(Li).Key))
If objtree.Nodes.Item(Li).Checked Then
If TV_AssignedAdd(TVassigned_rswOpen, IDCriteria, TVassigned_rswCriteriaField) Then
End If
Else
End If
Next
End Function
Public Function TV_AssignedAdd(TV_rswOpen As String, IDCriteria As Long, TVassigned_rswCriteriaField As String) As Boolean
'![Issue ID] = ActiveIssue İLGİLİ YAZILIMDA HER KULLANIMDA YENİDEN TANIMLANMALI
If rsw.OpenRecordset(TV_rswOpen) Then
With rsw.Recordset
.AddNew
![Issue ID] = ActiveIssue 'İLGİLİ YAZILIMDA HER KULLANIMDA YENİDEN TANIMLANMALI
.Fields(TVassigned_rswCriteriaField).Value = IDCriteria
If rsw.Update Then TV_AssignedAdd = True
End With
End If
End Function
Public Function TV_AssignedDelete(TV_rswOpen As String, TV_rswCriteria As String) As Boolean
If rsw.OpenRecordset(TV_rswOpen, TV_rswCriteria) Then
With rsw.Recordset
.Delete
End With
TV_AssignedDelete = True
End If
End Function
Public Function TV_NodesClear(objtree As TreeView)
objtree.Nodes.Clear
End Function
Public Function TV_ListCount(objtree As TreeView) As Long
TV_ListCount = objtree.Nodes.Count
End Function