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


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

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

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


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/11/23 18:40:00 [显示全部帖子]

还是没搞好,另外双击哪些由列名生成的节点,全都是显示所有行,想改成保留筛选结果,而不是显示所有行.

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


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

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
system1977
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
system1977
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | 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") & "人)")

 回到顶部
帅哥哟,离线,有人找我吗?
system1977
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | 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是什么作用?(搜帮助没找到)



 回到顶部
帅哥哟,离线,有人找我吗?
system1977
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | 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转换要放在哪个位置?
按照原来做法筛选代码有点难理解,如果工龄使用多层表头分开年月日都是数值型三列是不是相对来说简单些?


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


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/11/30 23:18:00 [显示全部帖子]

打开提示这个:Conversion from string "入职日期 > '2017-11-30'" to type 'Long' is not valid.

表达式错在哪里?
n4.Nodes.Add("1-3","1年以上-3年以下" & "(" & DataTables("表A").Compute("count(_Identify)","入职日期 > '" & Date.today().addYears(-1) & "'" And "入职日期 > '" & Date.today.AddYears(-3) & "'") & "人)")


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


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/12/6 20:50:00 [显示全部帖子]

帮忙看一下,附件中的6年-9年这一项为什么筛选不出来
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.table



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


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/12/7 23:00:00 [显示全部帖子]

筛选不正确,1年-5年(含5年)共有4条记录,却只能筛选出3条,工龄为5年的,筛选不出来:

Dim n4 As winform.treeNode = trv.Nodes.add("工龄_年","工龄")
n4.Nodes.Add("1年-5年","1年-5年" & "(" & DataTables("表A").Compute("count(_Identify)","入职日期 <= '" & Date.today.addYears(-1) & "' And 入职日期 >= '" & Date.Today.AddYears(-5) & "'") & "人)")



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


加好友 发短信
等级:幼狐 帖子:100 积分:992 威望:0 精华:0 注册:2019/4/2 22:28:00
  发帖心情 Post By:2019/12/8 23:06:00 [显示全部帖子]

以下是引用有点蓝在2019/12/8 21:14:00的发言:
filter = "入职日期 <= #" & Date.Today.AddYears(-1 * val(ar(0))) & "#" &  "And 入职日期 >= #" & Date.Today.AddYears(-1 * val(ar(1))) & "#"
这个测试不行,还是有一行筛选不出来,要等同下面代码的结果:
                    filter = "工龄_年 >= 1" & " and 工龄_年 <= 5"   (这个包含了5年共4条记录,上面的代码却只有3条.)


 回到顶部
总数 49 上一页 1 2 3 4 5 下一页