ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > 综合应用 > TreeView數據庫完整範例

TreeView數據庫完整範例

作者:绿色风 分类: 时间:2022-08-18 浏览:146
楼主
allall
UrserForm1的代碼:

  1. Option Explicit
  2. Private Sub Calendar1_Click()
  3.     Me.ComboBox3.Clear
  4.     Me.ComboBox3.AddItem Me.Calendar1.Value
  5.     Me.ComboBox3.ListIndex = 0
  6.     Me.Calendar1.Visible = False
  7.     If Me.ComboBox4.Value = "" Then Exit Sub
  8.     If CDate(Me.ComboBox4.Value) <= CDate(Me.ComboBox3.Value) Then
  9.         MsgBox "第二個日期必須大於第一個日期", vbInformation, "友情提示"
  10.         Me.ComboBox3.Clear
  11.         Exit Sub
  12.     End If
  13. End Sub
  14. Private Sub Calendar2_Click()
  15.     Me.ComboBox4.Clear
  16.     Me.ComboBox4.AddItem Me.Calendar2.Value
  17.     Me.ComboBox4.ListIndex = 0
  18.     Me.Calendar2.Visible = False
  19.     If Me.ComboBox3.Value = "" Then Exit Sub
  20.     If CDate(Me.ComboBox4.Value) <= CDate(Me.ComboBox3.Value) Then
  21.         MsgBox "第二個日期必須大於第一個日期", vbInformation, "友情提示"
  22.         Me.ComboBox4.Clear
  23.         Exit Sub
  24.     End If
  25. End Sub
  26. Private Sub CheckBox1_Click()
  27.     Dim r&, lvwCount&
  28.     Dim MyCol1 As New Collection
  29.     Dim MyCol2 As New Collection
  30.     Dim MyCol5 As New Collection
  31.     If Me.CheckBox1.Value = True Then
  32.         Me.CheckBox2.Value = False
  33.         Me.ComboBox1.Enabled = True
  34.         Me.ComboBox2.Enabled = True
  35.         Me.ComboBox5.Enabled = True
  36.         Me.Label2.Enabled = True
  37.         Me.Label4.Enabled = True
  38.         Me.Label13.Enabled = True
  39.         lvwCount = Me.ListView1.ListItems.Count
  40.         On Error Resume Next
  41.         For r = 1 To lvwCount
  42.             MyCol1.Add Me.ListView1.ListItems(r).SubItems(1), Me.ListView1.ListItems(r).SubItems(1)
  43.             MyCol2.Add Me.ListView1.ListItems(r).SubItems(2), Me.ListView1.ListItems(r).SubItems(2)
  44.             MyCol5.Add Me.ListView1.ListItems(r).SubItems(4), Me.ListView1.ListItems(r).SubItems(4)
  45.             Err.Clear
  46.         Next
  47.         For r = 1 To MyCol1.Count
  48.             Me.ComboBox1.AddItem MyCol1(r)
  49.         Next
  50.         For r = 1 To MyCol2.Count
  51.             Me.ComboBox2.AddItem MyCol2(r)
  52.         Next
  53.         For r = 1 To MyCol5.Count
  54.             Me.ComboBox5.AddItem MyCol5(r)
  55.         Next
  56.     Else
  57.         Me.ComboBox1.Clear
  58.         Me.ComboBox1.Enabled = False
  59.         Me.ComboBox2.Clear
  60.         Me.ComboBox2.Enabled = False
  61.         Me.ComboBox5.Clear
  62.         Me.ComboBox5.Enabled = False
  63.         Me.Label2.Enabled = False
  64.         Me.Label4.Enabled = False
  65.         Me.Label13.Enabled = False
  66.     End If
  67. End Sub
  68. Private Sub CheckBox2_Click()
  69.     If Me.CheckBox2.Value = True Then
  70.         Me.CheckBox1.Value = False
  71.         Me.ComboBox3.Enabled = True
  72.         Me.ComboBox4.Enabled = True
  73.         Me.Label1.Enabled = True
  74.         Me.Label3.Enabled = True
  75.     Else
  76.         Me.ComboBox3.Clear
  77.         Me.ComboBox3.Enabled = False
  78.         Me.ComboBox4.Clear
  79.         Me.ComboBox4.Enabled = False
  80.         Me.Label1.Enabled = False
  81.         Me.Label3.Enabled = False
  82.     End If
  83. End Sub
  84. Private Sub CommandButton2_Click()
  85.     Dim lvwArr
  86.     Dim r&, lvwCount&
  87.     Dim DateSet As Date, DateSet1 As Date, DateSet2 As Date
  88.     Dim txtFind1 As String, txtFind2 As String, txtFind5 As String
  89.     On Error GoTo Errhander
  90.     If Me.CheckBox2.Value = True Then
  91.         DateSet1 = CDate(Me.ComboBox3.Value)
  92.         DateSet2 = CDate(Me.ComboBox4.Value)
  93.         lvwCount = Me.ListView1.ListItems.Count
  94.         If lvwCount = 0 Then Exit Sub
  95.         'ReDim lvwArr(1 To lvwCount, 1 To 8)
  96.         For r = lvwCount To 1 Step -1
  97.             DateSet = CDate(Me.ListView1.ListItems(r).SubItems(5))
  98.             If DateSet < DateSet1 Then
  99.                 Me.ListView1.ListItems.Remove (r)
  100.             ElseIf DateSet > DateSet2 Then
  101.                 Me.ListView1.ListItems.Remove (r)
  102.             End If
  103.         Next
  104.     ElseIf Me.CheckBox1.Value = True Then
  105.         txtFind1 = Me.ComboBox1.Text
  106.         txtFind2 = Me.ComboBox2.Text
  107.         txtFind5 = Me.ComboBox5.Text
  108.         lvwCount = Me.ListView1.ListItems.Count
  109.         If lvwCount = 0 Then Exit Sub
  110.         For r = lvwCount To 1 Step -1
  111.             If txtFind1 = Me.ListView1.ListItems(r).SubItems(1) And _
  112.                txtFind2 = Me.ListView1.ListItems(r).SubItems(2) And _
  113.                txtFind5 = Me.ListView1.ListItems(r).SubItems(4) Then
  114.             Else
  115.                 Me.ListView1.ListItems.Remove (r)
  116.             End If
  117.         Next
  118.         lvwCount = Me.ListView1.ListItems.Count
  119.         If lvwCount = 0 Then MsgBox "未找到匹配記錄!", vbInformation, "友情提示"
  120.     End If
  121. Errhander:
  122.     If Me.CheckBox2.Value = True Then
  123.         MsgBox "未找到匹配記錄!" & Chr(13) & "請檢查輸入的日期範圍是否存在!", vbInformation, "友情提示"
  124.     End If
  125.     Err.Clear
  126. End Sub
  127. Private Sub Label5_Click()
  128.     Me.Calendar1.Visible = True
  129. End Sub
  130. Private Sub Label6_Click()
  131.     Me.Calendar2.Visible = True
  132. End Sub
  133. Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
  134.     Dim cnn As ADODB.Connection
  135.     Dim rst As ADODB.Recordset
  136.     Dim sql, i
  137.     Set cnn = New ADODB.Connection
  138.     Set rst = New ADODB.Recordset
  139.     On Error Resume Next
  140.     With cnn
  141.         .Provider = "Microsoft.Jet.OLEDB.4.0"
  142.         .ConnectionString = "Data source=" & ActiveWorkbook.FullName & ";Extended properties= Excel 8.0"
  143.         .CursorLocation = adUseClient
  144.         .Open
  145.     End With
  146.     Me.ListView1.ListItems.Clear
  147.     If Node.Children = 0 Then
  148.         sql = "select * from [材料表$] where 材料編號 like'" & Node.Text & "'"    '
  149.         rst.Open sql, cnn, adOpenKeyset
  150.         If rst.RecordCount = 0 Then MsgBox "未找到匹配記錄!", vbInformation, "友情提示": Exit Sub
  151.     Else
  152.         sql = "select * from [材料表$] where 材料編號 like'" & Node.Text & "%'"    '如某某字段內,包含“***”,則用 LIKE ‘%***%’,使用兩個百分號(%)
  153.         rst.Open sql, cnn, adOpenKeyset
  154.     End If
  155.     For i = 1 To rst.RecordCount
  156.         With Me.ListView1.ListItems.Add()
  157.             .Text = rst.Fields(0)
  158.             .SubItems(1) = rst.Fields(1)
  159.             .SubItems(2) = rst.Fields(2)
  160.             .SubItems(3) = rst.Fields(3)
  161.             .SubItems(4) = rst.Fields(4)
  162.             .SubItems(5) = rst.Fields(5)
  163.             .SubItems(6) = rst.Fields(6)
  164.             .SubItems(7) = rst.Fields(7)
  165.         End With
  166.         Err.Clear
  167.         rst.MoveNext
  168.     Next
  169.     Set cnn = Nothing
  170.     Set rst = Nothing
  171. End Sub
  172. Private Sub UserForm_Initialize()
  173.     Dim introw&, intcol&, i&, r&, n&
  174.     Dim str$, str1$
  175.     Dim tvwArr
  176.     On Error Resume Next
  177.     Me.TreeView1.Style = tvwTreelinesPlusMinusPictureText
  178.     Me.TreeView1.LineStyle = tvwRootLines
  179.     Me.TreeView1.CheckBoxes = False
  180.     Me.TreeView1.Nodes.Clear
  181.     Me.TreeView1.Nodes.Add , , "top", "產品名稱"
  182.     introw = Sheet1.UsedRange.Rows.Count
  183.     intcol = Sheet1.UsedRange.Columns.Count
  184.     tvwArr = Sheet1.UsedRange
  185.     For r = 1 To intcol
  186.         For i = 2 To introw
  187.             If Not IsEmpty(tvwArr(i, r)) Then
  188.                 If r = 1 Then
  189.                     Me.TreeView1.Nodes.Add "top", tvwChild, tvwArr(i, r), tvwArr(i, r)
  190.                 ElseIf Not IsEmpty(tvwArr(i, r - 1)) Then
  191.                     Me.TreeView1.Nodes.Add tvwArr(i, r - 1), tvwChild, tvwArr(i, r), tvwArr(i, r)
  192.                 Else
  193.                     Me.TreeView1.Nodes.Add CStr(Sheet1.Cells(i, r - 1).End(xlUp)), tvwChild, tvwArr(i, r), tvwArr(i, r)
  194.                 End If
  195.             End If
  196.         Next
  197.     Next
  198.     Me.ListView1.View = lvwReport
  199.     Me.ListView1.FullRowSelect = True
  200.     Me.ListView1.Gridlines = True
  201.     Me.ListView1.FlatScrollBar = False
  202.     Me.ListView1.ColumnHeaders.Clear
  203.     For i = 1 To 8
  204.         Me.ListView1.ColumnHeaders.Add , , Sheet3.Cells(1, i)
  205.     Next
  206.     Me.Calendar1.Visible = False
  207.     Me.Calendar2.Visible = False
  208.     Me.CheckBox1.Value = False
  209.     Me.CheckBox2.Value = True
  210.     Me.ComboBox1.Enabled = False
  211.     Me.ComboBox2.Enabled = False
  212.     Me.ComboBox5.Enabled = False
  213.     Me.Label2.Enabled = False
  214.     Me.Label4.Enabled = False
  215.     Me.Label13.Enabled = False
  216. End Sub


詳細請見附件Treeview.jpg
 

TreeView.rar
2楼
allall
再加一個國外的範例
3楼
slad
感谢
4楼
i彳亍
多谢LZ无私分享!
5楼
i彳亍
多谢无私分享
6楼
kangfeng
333333333333333

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap