D donkey Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-21 #21 midas方案本身的缺陷,实质上就是数据的即时同步问题. 锁定记录的意义不大,想想,如果第一个用户掉线,或是死机,或者效率低下,其他人怎么工作?
W wumeng Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-21 #22 》》我就是想在用戶修改之前就知道有沒有用戶在修改這篇記錄啊. 三层就是为多用户并发而设计的。所以你提出的这个问题是没办法解决的。
K kupwl2 Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-22 #23 database可以设置客户是当处理事务的时候,一个事务在处理时,不允许另一个事务 来同时处理,只有一个事务结束后,另一个才可以.. 好象是TRAN...什么属性.里面有三个属性让你选. 三层的话你只需要在应用服务器端设置一下就可以了, 好象是最下面那个. 你楼下的那位大哥说的很对,李维的书上是有的.
database可以设置客户是当处理事务的时候,一个事务在处理时,不允许另一个事务 来同时处理,只有一个事务结束后,另一个才可以.. 好象是TRAN...什么属性.里面有三个属性让你选. 三层的话你只需要在应用服务器端设置一下就可以了, 好象是最下面那个. 你楼下的那位大哥说的很对,李维的书上是有的.
S sydan Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-22 #24 TO:kupwl2 您好! 但是我用的是ADO啊,而且肯定是不會用BDE的!這可怎麼是好了!
W wumeng Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-23 #25 ADO 也有 TRAN呀!!!但这没不能解决你的问题!!! 还有,即使你说的全都作到了,那么,现在有3 个用户都打开了同一个表,而且都修改同 一条记录,你要保留第一个修改的,还是最后一个修改的呢??? 所以,最终都要回到我说的问题一来: 但看你的意思是想保存最后的修改。 来自:wumeng, 时间:2002-11-18 10:32:00, ID:1438697 | 编辑 你想保存第一个人修改的还是最后一个人修改的???
ADO 也有 TRAN呀!!!但这没不能解决你的问题!!! 还有,即使你说的全都作到了,那么,现在有3 个用户都打开了同一个表,而且都修改同 一条记录,你要保留第一个修改的,还是最后一个修改的呢??? 所以,最终都要回到我说的问题一来: 但看你的意思是想保存最后的修改。 来自:wumeng, 时间:2002-11-18 10:32:00, ID:1438697 | 编辑 你想保存第一个人修改的还是最后一个人修改的???
I ieiszwxm Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-27 #26 你们好: 我现在也在写一个出入库的数据库。我觉得应该在修改记录并存储的时候就对数据库进 行一次Refresh操作。这样当出错时就会报错。程序如下。 try clientdataset1.edit; ClientDataSet1.ApplyUpdates(0); clientdataset1.refresh; except on exception do begin clientdataset1.close;{当REFRESH出错时,关闭并重新打开 clientdataset1.open; 数据库就可以解决。并重新获得现在的实际数据} showmessage('数据可能正在被其他用户使用。请稍后尝试修改'); end;
你们好: 我现在也在写一个出入库的数据库。我觉得应该在修改记录并存储的时候就对数据库进 行一次Refresh操作。这样当出错时就会报错。程序如下。 try clientdataset1.edit; ClientDataSet1.ApplyUpdates(0); clientdataset1.refresh; except on exception do begin clientdataset1.close;{当REFRESH出错时,关闭并重新打开 clientdataset1.open; 数据库就可以解决。并重新获得现在的实际数据} showmessage('数据可能正在被其他用户使用。请稍后尝试修改'); end;
T tomljh Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-20 #27 这个问题小弟我知道原因: 在 Midas技术中,默认的更新模式是whereall。 即提交更新时一个关键的问题是如何定位原先的记录再更新,三种方式: A、根据主键来定位 keyOnly模式 B、根据主键+变动的字段来定位 C、根据原记录所有的字段来定位原记录 whereAll模式式(默认) 当两个以上的用户打开同一张表且更新同一条记录时,第一个人成功,其它人都会提示 更新错误,即记录被另外的一个人改变,无法定位。 解决办法: 一种:(土一点的) 告诉另外的几个用户你们关掉当前窗口,重新进入操作。 另一种: 采用A类提交方法,在应用服务器上设置对TDataSetProvider的属性UpdateMode属性 为KeyOnly,但是你要设置提交的表中那一个字段是Key字段即TField的属性ProviderFlags 为pfInKey ,这招采方能用。在应用服务器上恰当的更新事件中处理它们。 需要说明的是,这样做的话,当多用户的更改同一条记录的同一个字段时,最后的 结果以最后一个用户的为准。 另一种方法:(我也没有试过,有机会会在下一个项目中用。) 模拟ApplyUpdates方法,这样做的话可能程序员的自由度大一点。 哈哈,我。。。。。。。
这个问题小弟我知道原因: 在 Midas技术中,默认的更新模式是whereall。 即提交更新时一个关键的问题是如何定位原先的记录再更新,三种方式: A、根据主键来定位 keyOnly模式 B、根据主键+变动的字段来定位 C、根据原记录所有的字段来定位原记录 whereAll模式式(默认) 当两个以上的用户打开同一张表且更新同一条记录时,第一个人成功,其它人都会提示 更新错误,即记录被另外的一个人改变,无法定位。 解决办法: 一种:(土一点的) 告诉另外的几个用户你们关掉当前窗口,重新进入操作。 另一种: 采用A类提交方法,在应用服务器上设置对TDataSetProvider的属性UpdateMode属性 为KeyOnly,但是你要设置提交的表中那一个字段是Key字段即TField的属性ProviderFlags 为pfInKey ,这招采方能用。在应用服务器上恰当的更新事件中处理它们。 需要说明的是,这样做的话,当多用户的更改同一条记录的同一个字段时,最后的 结果以最后一个用户的为准。 另一种方法:(我也没有试过,有机会会在下一个项目中用。) 模拟ApplyUpdates方法,这样做的话可能程序员的自由度大一点。 哈哈,我。。。。。。。