以文本方式查看主题

-  易表在线答疑  (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=167)

--  作者:老宋
--  发布时间:2009/9/13 10:41:00
--  [原创]几个数据备份恢复的公式
[这个贴子最后由老宋在 2009/09/22 05:13pm 第 1 次编辑]

历经两个月的潜心易表研究,做了一个材料管理系统,同时做了几个通用的数据处理方面的公式,不敢独用,分享一下,希望能给大家带来一些帮助:
1.保存退出(自动备份超过500行数据的表)
Eval("If(["+Substitute(Substitute(Substitute(Substitute(Eval(Substitute("Substitute(#|@|$|&|#,#|#,#"+Substitute(ListGrids(),"|","#)+#|#+Substitute(#|@|$|&|#,#|#,#")+"#)","#","""")),"@","!Rows]>499,ExportTextFile(DocDir+"""),"$","""+"".txt"",char(9),Char(13),"""),"&",""",2) And ClearGrid("""),"|","""),True) And If([") + """),True)") And Save() And Exit()

2.数据加载(自动加载被清空的表的数据)
Eval("If(["+Substitute(Substitute(Substitute(Substitute(Eval(Substitute("Substitute(#|@|&|#,#|#,#"+Substitute(ListGrids(),"|","#)+#|#+Substitute(#|@|&|#,#|#,#")+"#)","#","""")),"@","!Rows]<2,SpenGrid("""),"&",""") And ImportTextFile(DocDir+"""),"|","""+"".txt"",Char(9),Char(13),0),True) And If(["),"Spen","Open")+ """+"".txt"",Char(9),Char(13),0),True)")


1.备份系统(自动备份所有表的数据)
Eval(Substitute("ExportTextFile(DocDir+#"+Eval("Substitute(""|#+#.txt#,char(9),Char(13),#|"",""|"","""+Substitute(ListGrids(),"|",""")+""#,3) And ExportTextFile(DocDir+#""+Substitute(""|#+#.txt#,char(9),Char(13),#|"",""|"",""")+""")")+"#,3)","#",""""))

2.恢复系统(自动加载所有表的数据)
Eval(Substitute(Substitute("SpenGrid(#"+Eval("Substitute(""|#) And ImportTextFile(DocDir+#|"",""|"","""+Substitute(ListGrids(),"|",""")+""#+#.txt#,Char(9),Char(13),0) And SpenGrid(#""+Substitute(""|#) And ImportTextFile(DocDir+#|"",""|"",""")+""")") + "#+#.txt#,Char(9),Char(13),0)","#",""""),"Spen","Open")) And Eval(Substitute("DelRow(#"+Substitute(ListGrids(),"|","#,1) And DelRow(#")+"#,1)","#",""""))
3.清空系统(自动清空所有表的数据)
Eval(Substitute("ClearGrid(#"+Substitute(ListGrids(),"|","#) And ClearGrid(#")+"#)","#",""""))

克隆表
SetVariable("%AAA%","材料台账") And SubtotalFill([%AAA%],"Substitute(ListCols([%AAA%]),""|"","","")","","") And ClearGrid(Grid) And OpenGrid([%AAA%]) And OpenGrid("万能报表")

以前的公式有太多的引号,套用函数后,将产生更多的引号,如果用#号将引号提前替换,套用函数将省去很多问题:

一翻二:
Eval(Substitute("Substitute(#|@|#,#|#,#"+Substitute(ListGrids(),"|","#)+#|#+Substitute(#|@|#,#|#,#")+"#)","#",""""))

一翻三:
Eval(Substitute("Substitute(#|@|&|#,#|#,#"+Substitute(ListGrids(),"|","#)+#|#+Substitute(#|@|&|#,#|#,#"


--  作者:tzszw
--  发布时间:2009/9/13 20:29:00
--  
学习了!
顶一下!
如果配有例子程序加说明更好!
--  作者:老宋
--  发布时间:2009/9/22 17:14:00
--  
数据和系统分离,能使易表程序使用个人版本来运行超过500行数据的表。

大家有需要进行数据系统分离处理的易表程序,可以用以上的公式处理。

如需要帮助,请发邮件给我。


--  作者:hzcaqjf
--  发布时间:2010/2/17 17:16:00
--  
根据您的以上公式制了一个表,取名为老宋易表,以后就不怕个人版的500行限制了。真的太谢谢您了。 图片点击可在新窗口打开查看
--  作者:132
--  发布时间:2010/5/24 11:22:00
--  
不错的公式,但有一个问题,如果是超过500行的表,不能添加记录!这个问题很严重!!!
--  作者:老宋
--  发布时间:2010/8/15 16:52:00
--  
对于超过500行的数据添加问题,可以使用导入空行的办法,我平时设置了100空行和200空行和500空行的空文件,必要时导入相应的空列表来添加数据
--  作者:浙江仔
--  发布时间:2010/10/7 10:41:00
--  
保存退出和数据加载都是针对txt文件的,能不能够导出、导入excel文件啊?
做到数据和系统完全分离使用外挂Excel文件?
--  作者:浙江仔
--  发布时间:2010/10/7 10:45:00
--  
这么复杂的公式我看了头晕,还理不清头绪。
--  作者:tzszw
--  发布时间:2010/10/8 20:24:00
--  
呵呵,看不懂的人很多喔,慢慢来吧!