表格数据操作筛选用法

使用问题 · 567 次浏览
huanggc66 创建于 2024-02-25 11:37

同样的表达式,两个不同的筛选方式,结果不一样。导出文本数据的方式,筛选结果是对的。 查询的方式,筛选结果会包含序号等于2 和3 的。并且不是按原表数据的顺序得到的结果。是我使用的方法不对吗?调试日志:https://temp.getquicker.net/9010/be4633a71f8746fa8a31f9670fcf081f.html

huanggc66 最后更新于 2024/2/25

回复内容
CL 2024-02-25 14:56
#1

看起来确实不太正常。 请把动作网址和测试文件发到我邮箱,我测试看看 197906@qq

沉没的白鲸 2024-02-25 15:13
#2

可能Quicker在读取成绩信息.xlsx文件时,把序号那一栏当作普通文字了所以不能正确筛选。

有个解决方案就是提前在{table}变量里面设置数字类型:


https://temp.getquicker.net/59771/c0da03cf5def4893825000b5d17ea5ce.html   


沉没的白鲸 最后更新于 2024-02-25 15:16
huanggc66 回复 沉没的白鲸 2024-02-25 15:31 :

感谢大佬解答疑惑,但是动作每次选择的文件不一样,没办法提前设置数据类型的。

huanggc66 回复 沉没的白鲸 2024-02-26 11:59 :

试了查询 年龄 字段,不需要提前设置数据类型,两种方式的查询结果也是正常的。测试了其他表格,只要查询第一列,不论原表格数据类型是 数值还是文本格式,查询或筛选行的方式,都出现了查询结果不对的情况。

CL 回复 huanggc66 2024-02-26 15:18 :

发下动作网址我试试

huanggc66 回复 CL 2024-02-26 15:38 :

应该不用动作就可以测试的,就两个步骤,导入Excel数据到table,然后输入表达式筛选,像我截图那样。

CL 回复 huanggc66 2024-02-26 15:41 :

没时间写了

huanggc66 回复 CL 2024-02-26 15:47 :

那等我开机再发你

huanggc66 回复 CL 2024-02-26 18:01 :

动作和表格发你邮箱了

CL 回复 huanggc66 2024-02-27 08:46 :

测试了一下,和列名、列的位置没有关系,和列里的值有关系。 如果把年龄那一列的值也改成1-9,筛选结果就和序号一样了。 所以这个应该是底层处理的算法对这种情况和实际需求不匹配,具体底层是什么处理方式没有办法判断了。 还是尽量提供明确的数据类型,再做筛选比较好。

另外我查到了有关说明,Select方法支持表达式里使用CONVERT,所以这里可以使用这样的筛选条件:

 CONVERT(序号, System.Int32) > 3


huanggc66 回复 CL 2024-02-27 09:45 :

我现在用的是导出文本的筛选方式,倒不影响筛选结果,只是动作生成的表达式不能通用而已。谢谢老大!

CL 2024-02-25 15:56
#3

查询和筛选行,使用的是DataTable.Select方法,

导出时候的筛选,使用的是DataTable.DefaultView.RowFilter 属性,两个可能在处理这种原始列类型为文本的情况有所不同。 不过没有找到具体的文档说明有关这个情况的差异。 建议还是明确列的类型,再使用和类型匹配的筛选条件。

huanggc66 回复 CL 2024-02-25 16:01 :
好的,明白了!
huanggc66 回复 CL 2024-02-26 12:01 :

试了查询 年龄 字段,不需要提前设置数据类型,两种方式的查询结果也是正常的。测试了其他表格,只要查询第一列,“标题 > 数字”,不论原表格数据类型是 数值还是文本格式,查询或筛选行的方式,都出现了查询结果不对的情况。

回复主贴