以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]筛选树与副本表的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=59382)

--  作者:maoshandao
--  发布时间:2014/11/3 12:51:00
--  [求助]筛选树与副本表的问题

我按照http://www.foxtable.com/help/index.html?n=0917.htm的帮助做,
窗口1中有个table1作为副本绑定的“统计表”,有个treeview1,窗口afterload事件设置的是
Dim cmd As New SQLCommand
Dim
 dt As DataTable
cmd
.CommandText = "Select Distinct Year(日期) As , Month(日期) As 产品 From {窗口1_table1}"
dt
 = cmd.ExecuteReader()
Dim
 trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree(dt, "年|月|产品")
trv
.Nodes.Insert("显示所有行",0)

运行的时候提示找不到窗口1_table1

我的想法是在窗口的TABLE1中进行筛选
[此贴子已经被作者于2014-11-3 12:52:12编辑过]

--  作者:y2287958
--  发布时间:2014/11/3 12:57:00
--  
{窗口1_table1}
这个表在后台是不存在的

--  作者:maoshandao
--  发布时间:2014/11/3 13:00:00
--  
那该怎么做


--  作者:maoshandao
--  发布时间:2014/11/3 13:23:00
--  
搞懂了,有个比较笨的方法:

2、目录的NodeMouseDoubleClick事件代码改为:

Dim Filter As String = ""
If
 e.node.Name <> "显示所有行" Then 
    
Dim d1 As Date
    Dim d2 As Date
    Dim Year As Integer = e.Node.DataRow(
"
")
    Dim Month As Integer = e.Node.DataRow(
"
")
    Dim Product As String = e.Node.DataRow(
"
产品")
    Select Case e.Node.Level
        Case 0
            d1 = New Date(Year,1,1) 
\'
取得该年的第一天
            d2 = new Date(Year,12,31) 
\'
取得该年的最后一天
            Filter = 
"
日期 >= #" & d1 & "# And 日期 <= #" & d2 & "#"
        Case 1
            d1 = New Date(Year, Month, 1) 
\'
取得该月的第一天
            d2 = new Date(Year, Month, Date.DaysInMonth(Year,Month)) 
\'
取得该月的最后一天
            Filter = 
"
日期 >= #" & d1 & "# And 日期 <= #" & d2 & "#"
        Case 2
            d1 = New Date(Year, Month, 1) 
\'
取得该月的第一天
            d2 = new Date(Year, Month, Date.DaysInMonth(Year,Month)) 
\'
取得该月的最后一天
            
Filter = "日期 >= #" & d1 & "# And 日期 <= #" & d2 & "# And 产品 = \'" & Product & "\'"
    End 
Select

End
 If
Tables("
窗口1_table1").Filter = Filter

目录的NodeMouseDoubleClick事件代码最后1行就行了,首先还是对原表进行筛选,然后在副本表中显示