Foxtable(狐表)用户栏目专家坐堂 → 用列名作为筛选树节点名,怎样做截图那样


  共有8381人关注过本帖树形打印复制链接

主题:用列名作为筛选树节点名,怎样做截图那样

帅哥哟,离线,有人找我吗?
有点蓝
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105495 积分:536466 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/24 21:21:00 [只看该作者]

上传实例

 回到顶部
帅哥哟,离线,有人找我吗?
system1977
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/11/25 6:48:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试用.table

基本工资做成18楼那样,另外,打印筛选出来的内容按钮怎样做?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105495 积分:536466 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/25 9:07:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试用2.zip


 回到顶部
帅哥哟,离线,有人找我吗?
system1977
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/11/26 17:55:00 [只看该作者]

1、附件工龄列为字符型,通过"入职日期"计算出工龄列,在筛选树如同基本工资那样分节点(如一年以下,1年到三年)怎样做?
2、之前的代码中"_identify",这个是什么意思,起到什么作用?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试用.table


[此贴子已经被作者于2019/11/26 22:27:01编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105495 积分:536466 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/27 8:47:00 [只看该作者]

1、用法和工资完全一样,自己参考着处理
2、"_identify"是主键,通过主键计算行数,不会错漏

 回到顶部
帅哥哟,离线,有人找我吗?
system1977
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/11/27 10:53:00 [只看该作者]

工龄列如果是纯数字按基本工资方法是可以处理,但现在工龄列内容是"3年10月10日"这样的,运行筛选出现错误提示:"Cannot perform '<=' operation on System.String and System.Int32."
那么代码应该怎样修改?

Dim n4 As WinForm.TreeNode = trv.Nodes.Add("工龄","工龄") '增加工龄节点
n4.Nodes.Add("1年以下","1年以下" & "(" & DataTables("表A").Compute("count(_Identify)","工龄 <= 1") & "人)")

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105495 积分:536466 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/27 11:06:00 [只看该作者]

n4.Nodes.Add("1年以下","1年以下" & "(" & DataTables("表A").Compute("count(_Identify)","入职日期 > '" & Date.today.AddYears(-1) &"'") & "人)")

n4.Nodes.Add("1年-3年","1年-3年" & "(" & DataTables("表A").Compute("count(_Identify)","入职日期 <= '" & Date.today.AddYears(-1) &"' and 入职日期 > '" & Date.today.AddYears(-3) &"'") & "人)")

 回到顶部
帅哥哟,离线,有人找我吗?
system1977
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/11/28 21:17:00 [只看该作者]

参照基本工资筛选代码方法,表达式总是不正确,通不过去,不知哪里出错:
正常代码:

Select Case e.Node.Level
Case 1
If e.Node.ParentNode.Text = "出生日期" Then
Dim y As Date = new Date(cint(e.Node.Text.Split("(")(0)),1,1) '取日期某部分?
Filter = "出生日期 >= #" & y & "# and 出生日期 < #" & y.AddYears(1) & "#"
ElseIf e.Node.ParentNode.Text = "基本工资" Then
If e.node.text.Contains("以下") Then
Filter = "基本工资 <= " & e.node.name.Replace("以下","")
ElseIf e.node.text.Contains("以上") Then
Filter = "基本工资 > " & e.node.name.Replace("以上","")
Else
Dim ar() As String = e.node.name.split("-")
Filter = "基本工资 >= " & ar(0) & " and 基本工资 <= " & ar(1)
End If
Else

Filter = e.Node.ParentNode.Text & " = '" & e.Node.Text.Split("(")(0) & "'"

End If
End Select
'
Tables("表A").Filter = Filter


出错的(单独测试):
Select Case e.Node.Level
    Case 1
        If e.node.parentnode.text = "工龄" Then
            

            If e.node.text.contains("以下") Then '判断节点是否包含指定字符

                Filter = "入职日期 <= " & e.node.name.Replace("以下","") '这个搞不清楚是入职日期还是工龄,但都试过,总感觉数据类型不对

            End If
        End If
        
End Select


另一个问题:
Dim y As Date = new Date(cint(e.Node.Text.Split("(")(0)),1,1)  这行代码是什么意思?cint是什么作用?(搜帮助没找到)



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105495 积分:536466 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/29 9:26:00 [只看该作者]

工龄需要转换为日期进行判断,比如工龄1年内,那么就是今天开始往前推1年内的日期内入职的都算

今天开始往前推1年内的时间 = Date.today.AddYears(-1) ,今天的日期减一年:http://www.foxtable.com/webhelp/topics/1337.htm

Filter = "入职日期 >= " & 
Date.today.AddYears(-1)  意思就是入职日期大于一年前的今天的都算1年内入职,也就是工龄不满一年

所以
Filter = "入职日期 <= " & e.node.name.Replace("以下","")
应该改为
Filter = "入职日期 <= " & Date.today.AddYears(-1 * val(e.node.name.Replace("年以下","")))


 回到顶部
帅哥哟,离线,有人找我吗?
system1977
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/11/29 20:59:00 [只看该作者]

 Date.today.AddYears(-1 * val(e.node.name.Replace("年以下",""))) 是不是年份*字符转整数?
上面的代码运行出现这个错误提示:Cannot perform '>=' operation on System.DateTime and System.Int32.是不是就是数据类型不正确? 需要cintl转换要放在哪个位置?
按照原来做法筛选代码有点难理解,如果工龄使用多层表头分开年月日都是数值型三列是不是相对来说简单些?


 回到顶部
总数 87 上一页 1 2 3 4 5 6 7 8 9 下一页