按老大教导,重新把问题描述一下。
一、目标:目录树只对加载出来的列进行建树和筛选
二、先说我怎么干的

,
1、在窗口加载时,按自定义的 _UserOffice 进行加载;同时生成目录树treeview1(估计就是这里错了)
'加载本部门数据
With DataTables("收文")
.LoadFilter = "" '设置加载条件
.LoadFilter = "办文单位 = '" & _UserOffice & "'"
.LoadPage = 0 '加载第一页
.LoadTop = 20 '每页20行
.Load()
e.Form.Controls("TextBox4").Value = 1 & "/" & .TotalPages
End With
'生成目录树
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT Year(收文日期) As 年, Month(收文日期) As 月 From {收文}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "年|月")
2、在目录树nodemouseclick处,点击则筛选
Dim Value() As String
Dim Filter As String
Dim d1 As Date
Dim d2 As Date
Value = e.Node.FullPath.Split("\")
Select Case e.Node.Level
Case 0
Dim y As Integer = value(0)
d1 = New Date(y,1,1) '取得该年的第一天
d2 = new Date(y,12,31) '取得该年的最后一天
Filter = "收文日期 >= #" & d1 & "# And 收文日期 <= #" & d2 & "#"
Case 1
Dim y As Integer = value(0)
Dim m As Integer = value(1)
d1 = New Date(y, m, 1) '取得该月的第一天
d2 = new Date(y, m, Date.DaysInMonth(y,m)) '取得该月的最后一天
Filter = "收文日期 >= #" & d1 & "# And 收文日期 <= #" & d2 & "#"
End Select
Tables("收文").Filter = Filter
三、图示更好理解
第一图,加载数据并生成目录树。。。

此主题相关图片如下:1.jpg

第二图,注意,实际上2012年6月和2013年的3月数据,实际 _UserOffice 没有浏览权限,不应该出现这两个节点的。

此主题相关图片如下:2.jpg

何故?个人认为应该是目录树生成公示错了
[此贴子已经被作者于2013-6-13 13:46:15编辑过]