以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]重复值筛选出错 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128782) |
||||
-- 作者:明天的灵 -- 发布时间:2018/12/14 21:07:00 -- [求助]重复值筛选出错 对每日工作表的数据检查是否有重复的行(同一种操作台,出现一样的开始数或结束数) 用以下代码时,发现开始数为0时,即报重复值,其实表中开始数为0的行只有24#机与30#机各一行,不是重复值 Dim st1 As String Dim st2 As String Tables(e.Form.Name + "_table1").DataSource = DataTables("每日工作量") Tables(e.Form.Name + "_table1").StopRedraw For Each r As Row In Tables("操作台").rows Tables(e.Form.Name + "_table1").Filter = "[操作台] = \'" & r("操作台号") & "\'" Tables(e.Form.Name + "_table1").RepeatFilter("开始数",0) \' 筛选方式,0表示显示重复值,1表示排除重复值,2表示显示冗余值,3表示显示唯一值 If Tables(e.Form.Name + "_table1").Rows.Count >0 Then Tables(e.Form.Name + "_table1").ResumeRedraw MessageBox.Show(r("操作台号") + "的开始数据有重复") st1 + = r("操作台号") + "/" End If Tables(e.Form.Name + "_table1").RepeatFilter("结束数",0) If Tables(e.Form.Name + "_table1").Rows.Count >0 Then Tables(e.Form.Name + "_table1").ResumeRedraw MessageBox.Show(r("操作台号") + "的结束数据有重复") st2 + = r("操作台号") + "/" End If Next MessageBox.Show(st1 + "的开始数据有重复") MessageBox.Show(st2 + "的结束数据有重复") Tables(e.Form.Name + "_table1").ResumeRedraw Tables(e.Form.Name + "_table1").Filter = ""
|
||||
-- 作者:有点蓝 -- 发布时间:2018/12/14 21:14:00 -- 多列重复判断使用RepeatFilter是做不到的。 |
||||
-- 作者:明天的灵 -- 发布时间:2018/12/14 21:43:00 -- 蓝版主,是不是说,.RepeatFilter对于已筛选的条件不起作用,是对整个DataTables进行筛选检查? 我的第一个循环已只选一种操作台了,后面的条件只针对一个条件,开始数或结束数
[此贴子已经被作者于2018/12/14 21:50:22编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2018/12/14 21:58:00 -- 做不了的 |
||||
-- 作者:明天的灵 -- 发布时间:2018/12/14 22:24:00 -- 做过测试的,只要不是0,不同操作台即使有重复的开始数或结束数,也不会报错。 只有为0,才显示重复,即使是不同的操作台。
|
||||
-- 作者:明天的灵 -- 发布时间:2018/12/15 9:49:00 -- 我发现是狐表计算重复值有个BUG,当表中数据只有一行时,该行会显示重复值。虽然这个错误可以通过代码来排除,但是最好还是修改下狐表本身代码,排除只有一行的重复值显示。 请蓝版主验证下
|
||||
-- 作者:y2287958 -- 发布时间:2018/12/15 9:57:00 -- 再测试一下,是没反应。 还有,1楼的问题可以通过生成一个表达式列解决的
[此贴子已经被作者于2018/12/15 10:03:22编辑过]
|
||||
-- 作者:明天的灵 -- 发布时间:2018/12/15 10:02:00 -- 可以增加一个操作台号,如31#机,再在每日工作量表中增加一行31#机的开始数与结束数,再执行,一样显示这一行是重复值,其实整个表31#机只有这一行。 |
||||
-- 作者:明天的灵 -- 发布时间:2018/12/15 10:04:00 -- 能稍讲这个表达式列的思路吗? |
||||
-- 作者:明天的灵 -- 发布时间:2018/12/15 10:14:00 -- 我感得先按条件筛选,再求得重复值(除了只有一行数据),是没有问题。 可以看下以下二行简单的代码: Tables("表C").Filter = "第二列 = \'3\'" Tables("表C").RepeatFilter("第一列",0) \'Tables("表C").Filter = "" 输出为:
[此贴子已经被作者于2018/12/15 10:15:10编辑过]
|