以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 排序Bug (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172091) |
-- 作者:lgzhao -- 发布时间:2021/9/23 9:17:00 -- 排序Bug 发现一个Bug,sql语句的 例如: cmd.CommandText = "S00ELECT * FROM {Trans} where InventoryGLCode=‘12345’ order by Date asc, [_identify] asc" Dim DB As DataTable= cmd.ExeddddcuteReader(True) 此时得到的DB,如果用 For each datarow 语句逐行输出date和_identify的值,会发现输出的顺序永远事按_identify asc 排列的,Date列没有发挥作用。 但是当把这个DB绑定到Table进行显示的时候,table显示row的顺序却是正确的(即Date asc, [_identify] asc)。 只有DB内部datarow的顺序是错误的。 平时用着也许看不出问题。但是当计算总账流水的时候,只生成DB但却并不会输出到table显示,而且为了节省传输的时间空间,并不会读取所有的sql语句排序列,此时逐行循环的时候就会导致每行的余额计算都是错误的。 [此贴子已经被作者于2021/9/23 9:19:03编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/9/23 9:24:00 -- DataTable是无序的,不会受sql的排序影响。也不要迷信Table的排序就是正确的 tabel建议使用sort排序获取正确的顺序 DataTable通过select指定排序获取正确的顺序
|
-- 作者:lgzhao -- 发布时间:2021/9/23 9:34:00 -- 好吧。只是有些额外的开销。 但是我有个老系统,2020版的foxtable发布的,在客户那里正式用了一年多了。那个流水账余额就一直是正确的。算法就是上面的算法, 旧foxtable的排序或许和新版本的逻辑不一样? |
-- 作者:有点蓝 -- 发布时间:2021/9/23 9:54:00 -- 也许。再说了foxtable的datatable基于.net的datatable,.net的datatable本身填充数据也不是按顺序的 |
-- 作者:lgzhao -- 发布时间:2021/9/23 9:54:00 -- 好的。谢谢蓝老师 |