以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]节点切换速度较快时,会报错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133086)

--  作者:chnfo
--  发布时间:2019/4/6 11:38:00
--  [求助]节点切换速度较快时,会报错
偶然发现了一个树表的帖子,还是很有创意的。http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=71474&authorid=0&page=0&star=1
只是行切换快的时候,会报出错误

.NET Framework 版本:2.0.50727.8937
Foxtable 版本:2018.10.9.1
错误所在事件:
详细错误信息:
语法错误:“And”运算符前缺少操作数。

怎么解决这个问题?

另外,目前的数据行比较少,如果在数据行很多而且层次很深的情况下,用 in可能会导致查询语句过长而报错
[此贴子已经被作者于2019/4/6 12:04:30编辑过]

--  作者:有点蓝
--  发布时间:2019/4/6 12:04:00
--  
限制点击频率

 

static ptime As Date = Nothing
Dim sp As TimeSpan = Date.now - ptime
ptime = Date.now
If sp.TotalMilliseconds < 500  Then \'间隔500毫秒点击才有效
    Return
End If


原来的点击代码


--  作者:chnfo
--  发布时间:2019/4/6 12:10:00
--  
如果行数多而且层级深的时候,in的长度会不会导致麻烦?
目前的查询条件组合是:级码 Not In(\'3.1\',\'3.2\') And 级码 Not In(\'2.1\',\'2.2\',\'2.2.1\',\'2.2.1.1\',\'2.2.1.2\',\'2.2.2\',\'2.2.2.1\',\'2.2.2.2\') And 级码 Not In(\'2.1\',\'2.2\',\'2.2.1\',\'2.2.1.1\',\'2.2.1.2\',\'2.2.2\',\'2.2.2.1\',\'2.2.2.2\') And 级码 Not In(\'3.1\',\'3.2\')

如果行数很深,那么这样可能就不行了(比如说有个2000行或更多时)

这个跟loadfilter是不是也相似?如果in太多,就会出错呢?

刚试了一下点击频率限制,还是会报错哟


这个功能,在数据量小的时候还可以考虑使用,数据量成千上万时,效率不够高。或者是代码要优化才可以。现在测试10000个节点,最深层级5级的时候,展开和收缩速度好慢。
[此贴子已经被作者于2019/4/6 12:47:10编辑过]

--  作者:有点蓝
--  发布时间:2019/4/6 13:57:00
--  
in 查询效率非常低,in 里面的内容越多效率就越低
--  作者:chnfo
--  发布时间:2019/4/6 15:05:00
--  
有什么改进效率的办法呢?
dim c as string = curtable.current("级码")
            dim  fstr as string  = e.Table.Filter & " And 级码  in ( S E L E C T  级码 FROM CS WHERE 级码 Like \'" & c & ".*\')"
            fstr = fstr.Trim(" ","A","n","d")
            e.Table.Filter = fstr

运行提示什么“语法错误:“级码”运算符后缺少操作数”

这是什么意思?用法不对吗?
[此贴子已经被作者于2019/4/6 15:10:10编辑过]

--  作者:有点蓝
--  发布时间:2019/4/6 15:21:00
--  
没有什么好办法,如果需要这样用也就只能这样用。具体请上传实例,看看有没有变通的方法

dim  fstr as string  = e.Table.Filter & " And 级码  in ( S E L E C T  级码 FROM CS WHERE 级码 Like \'" & c & ".
%\')"
--  作者:chnfo
--  发布时间:2019/4/6 19:02:00
--  
这是示例,我只改动了Bom表的datacolchanged事件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计演示.zip



在click事件中加入代码之后,有时候快速点击级码列时,还是会报错
static ptime As Date = Nothing
Dim sp As TimeSpan = Date.now - ptime
ptime = Date.now
If sp.TotalMilliseconds < 500  Then \'间隔500毫秒点击才有效
    Return
End If
[此贴子已经被作者于2019/4/6 19:33:38编辑过]

--  作者:chnfo
--  发布时间:2019/4/6 22:29:00
--  
这个跟微软的project有点相象,不过响应速度明显比project慢,而且展开折叠在行间快速切换时,有时候还会报错。
数据量大、层次深的时候,响应速度明显迟滞。
不知道能在哪里优化一下。

从界面表现看,比左树右表的方式可能还直观一点。
我是想用,但有点不敢啊……
[此贴子已经被作者于2019/4/6 22:30:02编辑过]

--  作者:有点甜
--  发布时间:2019/4/7 9:35:00
--  

参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=104184&skin=0