Foxtable(狐表)用户栏目专家坐堂 → [求助]节点切换速度较快时,会报错


  共有2573人关注过本帖树形打印复制链接

主题:[求助]节点切换速度较快时,会报错

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]节点切换速度较快时,会报错  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/6 13:57:00 [只看该作者]

in 查询效率非常低,in 里面的内容越多效率就越低

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/4/6 22:29:00 [只看该作者]

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/7 9:35:00 [只看该作者]


 回到顶部