以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  目录树filter出错?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=93990)

--  作者:yancheng
--  发布时间:2016/12/12 20:35:00
--  目录树filter出错?
Dim filter As String
If e.Node.name = "所有考勤" Then
    filter = ""
Else

    Dim dr As DataRow = e.Node.DataRow
    Dim htmc As String = e.Node.DataRow("合同名称")
    Dim Year As Integer = e.Node.DataRow("年")
    Dim Month As Integer = e.Node.DataRow("月")
    Select Case e.Node.Level
        Case 0
            Filter ="合同名称 =\'" & htmc & "\'"
        Case 1
            Filter =" Year(考勤月份) = " & dr("年") & " And 合同名称 = \'" & htmc & "\' "
        Case 2
            Filter ="Year(考勤月份) = " & dr("年") & " And  Month(起始日期) = " & dr("月") & " And 合同名称 =\'" & htmc & "\'"
    End Select
End If
DataTables("考勤").loadFilter = filter
DataTables("考勤").load
Tables("考勤").Filter = filter

  Case 1
            Filter =" Year(考勤月份) = " & year & " And 合同名称 = \'" & htmc & "\' "   这样写也一样提示错误.


图片点击可在新窗口打开查看此主题相关图片如下:76.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2016/12/12 20:36:06编辑过]

--  作者:有点蓝
--  发布时间:2016/12/12 20:45:00
--  
Dim filter As String
If e.Node.name = "所有考勤" Then
    filter = ""
Else
    
    Dim dr As DataRow = e.Node.DataRow
    Dim htmc As String = e.Node.DataRow("合同名称")
    Dim Year As Integer = e.Node.DataRow("年")
    Dim Month As Integer = e.Node.DataRow("月")
Dim dy As Date = new Date(Year ,1,1)
Dim dm As Date = new Date(Year ,Month ,1)
    Select Case e.Node.Level
        Case 0
            Filter ="合同名称 =\'" & htmc & "\'"
        Case 1
            Filter =" 考勤月份 >= #" & dy & "# and 考勤月份 < #" & dy.AddYears(1) & "# And 合同名称 = \'" & htmc & "\' "
        Case 2
            Filter ="考勤月份 >= #" & dm & "# and 考勤月份 < #" & dm.AddMonths(1) & "#  And 合同名称 =\'" & htmc & "\'"
    End Select
End If
DataTables("考勤").loadFilter = filter
DataTables("考勤").load
\'Tables("考勤").Filter = filter

如果是sql server,把#改为单引号

--  作者:yancheng
--  发布时间:2016/12/13 10:15:00
--  
Dim Filter As String 
If e.node.name = "所有订单" Then
    filter = ""
Else
    Dim d1 As Date
    Dim d2 As Date
    Dim Year As Integer = e.Node.DataRow("年")
    Dim Month As Integer = e.Node.DataRow("月")
    Dim htmc As String = e.Node.DataRow("合同名称")
    Dim gys As String = e.Node.DataRow("供应商")
    Select Case e.Node.Level
        Case 0
            filter = "false"
        Case 1
            filter="合同名称 = \'"& htmc &"\'"
        Case 2
            filter="Year(入库日期) = " & Year & " And 合同名称 = \'" & htmc & "\'"
        Case 3
            Filter = "Year(入库日期) = " & year & " And month(入库日期) ="  & month & " And 合同名称 = \'"& htmc &"\'"
        Case 4
            Filter = "Year(入库日期) = " & year & " And month(入库日期) ="  & month & " And 合同名称 = \'"& htmc &"\' And 供应商 = \'" & gys & "\'"
    End Select

End If
DataTables("采购入库").LoadFilter= Filter
DataTables("采购入库").load()
Tables("采购入库").Sort = "入库日期 desc"

这个是我另一个表的筛选。
用上面的代码可以。有什么差别吗?为什么考勤表,不能用?

--  作者:yancheng
--  发布时间:2016/12/13 10:26:00
--  
用有点蓝,老师的代码。提示错误。SQL数据


图片点击可在新窗口打开查看此主题相关图片如下:5.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2016/12/13 10:43:00
--  
Year(入库日期)在DataTables("采购入库").LoadFilter中可以用,在Tables("采购入库").Filter中不可以用,要想做通用的就按2楼的方式用

4楼问题检查事件代码,表达式的使用有问题

--  作者:yancheng
--  发布时间:2016/12/13 10:58:00
--  
Dim filter As String
If e.Node.name = "所有考勤" Then
    filter = ""
Else
    
    Dim dr As DataRow = e.Node.DataRow
    Dim htmc As String = e.Node.DataRow("合同名称")
    Dim Year As Integer = e.Node.DataRow("年")
    Dim Month As Integer = e.Node.DataRow("月")
    Dim dy As Date = new Date(Year ,1,1)
    Dim dm As Date = new Date(Year ,Month ,1)
    Select Case e.Node.Level
        Case 0
            Filter ="合同名称 =\'" & htmc & "\'"
        Case 1
            Filter =" 考勤月份 >= \'" & dy & "\' and 考勤月份 < \'" & dy.AddYears(1) & "\' And 合同名称 = \'" & htmc & "\' "
        Case 2
            Filter ="考勤月份 >= \'" & dm & "\' and 考勤月份 < \'" & dm.AddMonths(1) & "\'  And 合同名称 =\'" & htmc & "\'"
    End Select
End If
If filter > "" Then
    DataTables("考勤").RemoveFor(filter)
    DataTables("考勤").AppendLoad(filter)
    Tables("考勤").Filter = filter
Else
    DataTables("考勤").loadFilter = filter
    DataTables("考勤").load
    Tables("考勤").Filter = filter
End If
图片点击可在新窗口打开查看此主题相关图片如下:5.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2016/12/13 11:05:00
--  
msgbox(filter) ,弹出内容看看
--  作者:yancheng
--  发布时间:2016/12/13 11:25:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:9.jpg
图片点击可在新窗口打开查看

我如果把代码的单引号去掉。弹错说;日期与双精度小数不匹配。
[此贴子已经被作者于2016/12/13 11:36:44编辑过]

--  作者:yancheng
--  发布时间:2016/12/13 11:31:00
--  
111
图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/12/13 11:31:57编辑过]

--  作者:有点蓝
--  发布时间:2016/12/13 11:54:00
--  
这个条件不应该有问题,是什么数据库?