三层架构增删记录序号问题(50分)

  • 主题发起人 主题发起人 chenxp3000
  • 开始时间 开始时间
C

chenxp3000

Unregistered / Unconfirmed
GUEST, unregistred user!
各位同仁:
小弟现在遇到一个问题,在Dbgrid中执行Insert操作,想把Insert记录以后的序号自动
加1,整个序号保持连续!并且该序号可以手动修改(要求不是计算字段),该字段为排序字段!排除了用触发器的可能,因为我想让用户在执行Insert操作时就能看到效果!确认记录顺序无误再调用接口方法往数据库里面写!希望各位朋友提供代码或者是算法都可以!!
删除记录时情况类似(要求后面的序号自动减1);小弟在这先谢谢啦!
 
应该不复杂。
首先,用断开连接的ClientDataset作为DBGrid的数据源,并且确保记录按照序号排序。
然后,在INsert触发的事件中,对当前位置后的记录序号全部加1,并且记录下Insert的记录的序号。
最后,在确认insert的时候,向后台首先执行当前位置后所有记录序号加1的SQL语句,然后执行insert语句。
你这种想法有一个问题:就是不支持并发操作,特别是大量用户的情况,很可能出现提交失败。
 
这里不考虑并发操作!
因为每个操作员只能维护它自己做的单据,这有权限控制!
你的思路我试过了,但是我需要的效果是在本地缓存中操作员就要看到序号的变化效果!
并且它还有可能要手动做一些序号顺序调整!然后做一次性数据库写操作!
 
一种解决方案:记录使用隐藏关键字,序号字段为非关键字字段,并且不重复。
这样一次提交修改是没有问题的。
 
这个字段现在也不是主键,
我觉得你的思路时对的,但是具体实现起来有些问题!
你的数据都还没有更新到数据库里面,所以没法用SQL语句,
来把位置后所有记录序号加1,在客户端做循环操作改变序号从Insert 位置后做加1操作!
但是却结果人意料!没法达到预期效果。你可以试一下![:(]郁闷!
 
后退
顶部