各位高手们以及跟我一样菜的朋友们,在你们所做的系统中(不管大小,不论什么类型的程序)你们的程序里面有没有undo和redo功能?如果有的话,你们都采用什么方式实现的呢?希望大家都不吝赐教,让我也学学,我的这个 东西做得不好阿!!
解决方案 »
- 请教有关sql server并发控制和delphi编程的问题
- 遍历TADOQuer的每一条记录(大概40000条)为什么要30多秒呢?
- 我用Excel控件打开Excel,但在程序里怎么也不能释放.求救
- (医院管理的大哥们帮帮忙)用delphi+sqlserver编写的医院管理系统中经常出现库存不准
- TRemoteDataModule在客户端连接时怎么知道现在连接的客户端的IP?
- 如何用DELPHI制作卸载程序
- 请问如何在windows98下调用windowsxp的窗口控件?
- 怎样得到字符串的长度
- 如何在MDI主窗体显示之前运行登录对话框?
- 一次滑稽的解决过程
- 我是新新手,问题很简单,可能描述不清楚,请老师们指教,我尽量说清楚!(100分)
- 如何自动合并字段
本人报着学习的想法UP一下!不过个人觉得只有类似文档编辑类的东西才用得上UNDO,REDO,
否则,在其他方面,按下OK后,还想回头,不大好吧。
平常每一操作把一部分数据放到undo的栈中,在操作undo时把一部分数据放到redo中。---------------------------------------
用栈数据结构---undo
redo也用栈
我经常使用非数据感知控件对数据库进行操作,
例如EDIT代替DBEDIT,STRINGGRID、TREEVIEW、LISTVIEW代替DBGRID。
用户编辑数据时,不对数据库做任何事情;但编辑完后,
会给用户2条路走,一是“保存”,二是“取消”
----------------------------------------------
undo只要恢复操作前这点的位置
你都是这样做的吗?我认为不可取
我经常使用非数据感知控件对数据库进行操作,
例如EDIT代替DBEDIT,STRINGGRID、TREEVIEW、LISTVIEW代替DBGRID。
用户编辑数据时,不对数据库做任何事情;但编辑完后,
会给用户2条路走,一是“保存”,二是“取消”如果按照你的这个做法,那么加入用户需要修改100个数据,他已经正确的修改了99个,这偏偏最后一个错了,他现在取消,然后重新修改这100个数据么?那你的程序也太不人道了!
存储过程不就解决了?
或是处理成关联表,它给你自动调用事务也一样的。
你能不能说说理由!??续上:
其实我很明白这种做法的利与弊!!!
最严重的弊是:与用数据感知控件做事情相比,
这个方法执行效率不是很高,速度不是很快,能支持的客户端估计
不能超过100个(未真实测试过,按照普通的C/S结构200多个客户端来估算),
要想移植到三层结构绝对不行!但是,利的方面,主要有:
1、控制事务处理非常容易,不象用数据感知控件,Star了Trans半天,
还不知道要等多长时间(修改数据)才能Commit或RollBack;
而我这个是等到用户修改数据完毕点保存的时候才做:
检查数据合法 -> StarTrans -> CommitTrans,
StarTrans 和 CommitTrans之间的时间只有1、2秒。
2、你们有没有遇到过使用数据感知控件处理多层的主从表问题,
我这个方法不仅可以轻易解决很多问题,而且,
关键是事务控制也十分简便!3、我这个方法可以随心所欲的去控制很多数据处理。
希望大家多多讨论!!!