平时不常做什么数据库项目,一旦做了,发现了许多问题与麻烦,特别是多人共享记录操作:
一条记录,字段很多,几人要维护它的数据,才发现问题的严重!
一>别人修改后的脏数据问题:
  实际出现脏数据,不应该影响我什么,但BCB6不允许Post,如何解决?
为了简单,我喜欢用DBEdit之类的操作界面,用户点Post时,才发现是"脏数据",没法提交,
录的数据白输了;
    1>把数据表拆成几个表,冲突减少了,但程序增加了不少麻烦,不太希望这么做;
    2>不用DBEdit,用Edit先暂存后提交式,发现脏数据没有关系的,刷新后重新提交,
      也有点的麻烦;
    3>加一个字段,做独占标记,一个人修改好后,再让别人改,共享打了点折扣,也增加了麻烦;
我希望是:脏数据也允许 Post,  希望大家出出主意!!!

       

PostError:
Dataset->Cancel();
Dataset->Refresh();
Dataset->Edit();
Dataset->…
Dataset->Post();

尽量改变设计.不到万不得以,不出杀手简:

"服务器游标"

C/C++ code
// 如果是会有多用户并发操作的情况 // 可以考虑用SQL事务来弄 /* XConnection->BeginTrans(); DML操作或select查询 XConnection->CommitTrans(); XConnnection->RollbackTrans() */

用"服务器游标"即: clUseServer,还是不行, 
总是出现:"无法为更新定位行,一些值已在最一次读取后已更改"
原因是执行POST时,它的最终SQL语句的WHERE是每个字段比较的,它找不到了,
其实,我有一个ID关键字的,

用事务解决不了我的问题呀,我的问题是,别人修改后,我如果也能POST,

不用POST ,用SQL语句直接修改.你觉得了.

已解决:
MyLove说的对, "服务器游标"
问题是如何试成功的问题.经试验: ADO的这个问题不是Borland的事,是微软的问题;
我用一个ADOConnection1,两个ADODataSet:  ADODataSet1,ADODataSet2都提向同
一个表做试验;用两个DBGrid观察;

ADOConnection1->CursorLocation=clUseServer;
ADODataSet1->CursorLocation=clUseServer;          // 不要忘了!
ADODataSet1->CursorType=ctKeyset;                // 不要忘了!
ADODataSet2->CursorLocation=clUseServer;     
ADODataSet2->CursorType=ctKeyset;
//——————————————————–
一切OK!不会冲突,谁改了某一字段,就改了字段!
成功! 成功!

解决这个问题的文章特少.呵呵;
如果这个问题不解决,我的项目没法做下去了,已搞的一个月了.
这可是我在新单位的第一个项目呀,关系到能不能呆下去的问题.

这才是真正的数据库共享呢
有时一条大记录,两个用户,各自修改各自的一批字段,如果这不允许的话,就不合理了,
否则,共享就没用处了!