以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 复杂的筛选功能 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=106385) |
||||
-- 作者:yangwenghd -- 发布时间:2017/9/7 17:13:00 -- 复杂的筛选功能 如果项目流程相同的行没有一个已完成,这显示项目名称相同的所有行,然后在筛选出日期列有日期的行 相当于筛选出 项目流程 列内,相同的行 没有已完成 再对应项目名称所有的行,再筛选出 计划_开始日期列有日期的行。 换的理解就是,筛选出项目流程相同的是否有一行的状态列有已完成,把没有意见完成的相同项目名称相同的行,且日期列有日期的行筛选出来。 比如 项目流程列有很多相同的,如:项目流程a 项目流程a 项目流程a 项目流程b 项目流程b 项目流程b 项目流程c 项目流程c 项目流程c 先检查这些项目流程列 相同的再状态列有没 已完成的,比如项目流程a 相同的行 再状态列有一行是已经完成就不筛选,(或者不管)继续看项目流程b,如果项目流程b相同在状态列没有一个已完成,那么筛选出项目流程行所有相同的 且日期列有日期的。 其实这个确实很麻烦,是想筛选出项目名称下的项目流程是否没个都已经完成,如果完成不管。如果项目流程相同的没有一个已完成,则显示出同行 项目名称相同的所有行,再这里已经筛选的里面筛选出 计划_开始日期列 有日期的行,非常的麻烦,不知道能不能实现。 以这个为例,项目A的流程2 流程3在状态别都有已完成,就不管他, 再看项目B的流程1和流程2,流程1的状态有已完成,但是流程2的状态列没有已完成,则筛选出项目B所有在计划_开始有日期的行,可以这样筛选吗?后面的都这样筛选。确实太复杂了,感谢 感谢 此主题相关图片如下:qq截图20170907170946.png
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/7 19:50:00 -- Dim t As Table = Tables("计划表") Dim str As String = t.DataTable.GetComboListString("项目名称", "状态 = \'办理中\'").replace("|", "\',\'") t.filter = "项目名称 in (\'" & str & "\') and 计划_开始日期 is not null" |
||||
-- 作者:yangwenghd -- 发布时间:2017/9/8 11:18:00 -- 可以筛选出 项目流程 列 相同的行的状态列没有已完成的行吗? 比如项目流程列 所有流程2有已完成就不显示,如果没有就显示 所有的流程2 相同的行,感谢 感谢
[此贴子已经被作者于2017/9/8 11:18:19编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/8 13:37:00 -- Dim t As Table = Tables("计划表") Dim ls = t.DataTable.GetValues("项目名称|项目流程", "状态 = \'办理中\'") Dim str As String = "\'\'," For Each ary() As String In ls str &= "\'" & ary(0) + ary(1) & "\'," Next t.filter = "项目名称+项目流程 in (" & str.trim(",") & ")" |
||||
-- 作者:yangwenghd -- 发布时间:2017/9/8 14:37:00 --
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/8 14:50:00 -- 我测试代码没问题。请截图说明需要的效果。 |
||||
-- 作者:yangwenghd -- 发布时间:2017/9/9 0:24:00 -- 其实思路很简单,检查项目流程是不是每个都完成了,完成了就不筛选,如果没有完成,就要筛选出这个项目流程的整个项目名称,在这个的基础上筛选有日期的。 就好比A(项目名称) 下面有123(项目流程),如果不管123 的任何有一个没有完成(已完成),都要显示出整个 项目名称,这个的基础上筛选出有时间的行。 所以 第一个方框有已完成(项目流程相同的行)不管(不筛选),第二个框相同,三个也是,项目流程相同的都有 已完成, 但是 第四框(项目流程相同的行)没有已经 已完成 ,那么 显示出项目名称相同的,再这个的基础上显示有时间的行, 那么 没有 已完成的框 是 4、5、6、7的框没有已完成,他们分别相同的 项目名称列是 项目B 课名A ,再在已经筛选了的筛选有时间的 行 所以要筛选的就是第8、11、14、19、23、 虽然8行的方框有已完成,但是 项目B 流程2 没有完成,就要把相同的项目名称一起筛选出,在筛选有时间的行。 [此贴子已经被作者于2017/9/9 0:25:14编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2017/9/9 8:49:00 -- Dim t As Table = Tables("计划表") Dim ls = t.DataTable.GetValues("项目名称|项目流程", "状态 = \'已完成\'") Dim str As String = "\'\'," For Each ary() As String In ls str &= "\'" & ary(0) + ary(1) & "\'," Next t.filter = "计划_开始日期 is not null and 项目名称+项目流程 not in (" & str.trim(",") & ")" |
||||
-- 作者:yangwenghd -- 发布时间:2017/9/9 12:30:00 -- 这个是什么原因呀?感谢感谢 .NET Framework 版本:2.0.50727.8669 Foxtable 版本:2017.6.12.1 错误所在事件: 详细错误信息: 无法在 System.Boolean 和 System.String 上执行“And”操作。
|
||||
-- 作者:有点蓝 -- 发布时间:2017/9/9 14:17:00 -- Dim t As Table = Tables("计划表") Dim ls = t.DataTable.GetValues("项目名称|项目流程", "状态 = \'已完成\'") Dim str As String = "\'\'," For Each ary() As String In ls str &= "\'" & ary(0) + ary(1) & "\'," Next t.filter = "计划_开始日期 is not null and (项目名称+项目流程) not in (" & str.trim(",") & ")"
[此贴子已经被作者于2017/9/9 14:18:53编辑过]
|