以文本方式查看主题

-  易表在线答疑  (http://www.egrid2000.com/dvbbs/index.asp)
--  应用技巧  (http://www.egrid2000.com/dvbbs/list.asp?boardid=3)
----  [分享]酷!为系统增加一个“系统资源状态条”(附图)。  (http://www.egrid2000.com/dvbbs/dispbbs.asp?boardid=3&id=151)

--  作者:谢申
--  发布时间:2006/12/11 8:23:00
--  [分享]酷!为系统增加一个“系统资源状态条”(附图)。
使用易表制作的系统很多情况下会有十几个甚至几十个表在系统里面,为了让系统的功能更加完美、界面更加精制,如果在系统的主界面中增加一个“系统资源状态条”显示当前系统中制定表使用情况的话,不仅漂亮而且可以监视系统中表资源的使用情况,怎么样,手痒痒了么?那就动手做吧!
制作原理:
1.使用IF函数对制定表的行数进行统计,如果大于10的话就向变量中累加1;假如总共有25个表的话有5个已经使用了十行以上则说明使用了20%的系统资源。(我的系统中未使用的表是空表,你可以设定其他条件作为表已经使用的标准);
2.使用SetLabel函数让窗口标签显示状态条,显示的数值来源于IF函数统计的值;细心的易友不难发现,有点像刷新窗口的函数,不错,我就是细心学习了那个函数后制作了这个状态条。
当然,各个系统中表数不一样,哪些表算是系统资源,怎么样的使用才算是消耗了系统资源,大家可以另外设计,我的工资系统使用的易表版本比较早,是电脑报的专用版就不上传了,把我制作的截图给大家看一下吧!另外以下是我的公式,有点长,但是执行起来特快,不占用系统资源,放心吧!
SetVariable("%资源进度格A%",0) And SetVariable("%资源进度格B%",0) And SetLabel("@系统资源提示@","正在检查…") And If([工资档案!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([1月份!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([1月份L!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([2月份!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([2月份L!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([3月份!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([3月份L!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([4月份!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([4月份L!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([5月份!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([5月份L!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([6月份!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([6月份L!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([7月份!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([7月份L!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([8月份!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([8月份L!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([9月份!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([9月份L!Rows] > 0,SetVariable("%资源进度格A%",[%资源进度格A%]+1),"") And SetVariable("%资源进度格B%",[%资源进度格B%]+1) And SetLabel("@系统资源@",Rept("■",[%资源进度格B%])) And If([10月份!Row
--  作者:谢申
--  发布时间:2006/12/11 8:51:00
--  

--  作者:shxiaoya
--  发布时间:2006/12/11 16:51:00
--  
公式能否用eval简化一下呢?
--  作者:yangming
--  发布时间:2006/12/11 18:51:00
--  
思路是不错,先谢谢楼主!
--  作者:谢申
--  发布时间:2006/12/12 11:25:00
--  
其实我觉得每个人使用易表的水平分为四大部分,一是工作中的问题难度;二是自己的解决问题的方法;三是对易表公式的熟练掌握运用程度;四是对系统的美化设计。其中只有第三点是最难的也是大家需要共同面对的难题。我的状态条设计也是来源于前辈的文件,总是从这个论坛收下好的东东不太好意思啦,所以这个状态条刚刚出炉就立即公示于大家,现在我也在力求简化公式。用loop应该可以解决的吧,也希望前辈给我提示啊![DISABLELBCODE]
--  作者:yangming
--  发布时间:2006/12/12 15:04:00
--  
loop会影响速度,还是考虑一下,用eval看看
--  作者:gdlgh
--  发布时间:2006/12/14 13:48:00
--  
这么长的公式还是第一次看到,佩服!呵。。

其实公式中有很多重复的字,可用Substitute替换,并且有相关的数字1-12可用赋值变量循环替代,并同时结合eval函数,相信可省下好多笔水!
呵。纸上谈兵,只供参考!!


--  作者:dongd1
--  发布时间:2007/1/12 21:59:00
--  
如果czy老师看到相信会很轻松的解决这些eval函数问题,呵呵!
--  作者:czy
--  发布时间:2007/1/12 23:40:00
--  
东东版主过奖了。

楼主公式中的条件是很有规律的,所以用Eval解决的确是很轻松的事,下面公式未经测试,不过应该和楼主的没有什么差异。(比原公式减少3500个字符)

SetVariable("%资源进度格A%",0) And SetVariable("%资源进度格B%",0) And SetLabel("@系统资源提示@","正在检查…") And Eval("If(["+Substitute(ListGrids(),"|","!Rows]>0,SetVariable(""%资源进度格A%"",[%资源进度格A%]+1),true) And SetVariable(""%资源进度格B%"",[%资源进度格B%]+1) And SetLabel(""@系统资源@"",Rept(""■"",[%资源进度格B%])) And If([")+"!Rows]>0,SetVariable(""%资源进度格A%"",[%资源进度格A%]+1),true) And SetVariable(""%资源进度格B%"",[%资源进度格B%]+1) And SetLabel(""@系统资源@"",Rept(""■"",[%资源进度格B%]))") And SetLabel("@系统资源@",Rept("■",([%资源进度格A%])/25*13)) AndSetLabel("@系统资源值@",Text([%资源进度格A%]/25*100)+"%") And SetLabel("@系统资源提示@","已经使用 ↓")


--  作者:易行天下
--  发布时间:2007/1/13 7:19:00
--  
想不到这个帖子过了这么久斑竹还会考虑如何优化这个公式!!深表感谢!
俺就是楼主啦,换了个账户而已。我会把这个公式进行测试的!另外,我已经更改了这个状态条的显示,给它加了一个矩形长框(用微软拼音2003中的制表符组合)效果更好了,加上这个公式我想应该完美无缺了!