还五天交差,高分请进!急!!!! TClient.Applyupdatas(-1)时程序会死,怎么解决???(200分)

  • 主题发起人 主题发起人 yiyu
  • 开始时间 开始时间
Y

yiyu

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了个三层的程序。结构是:
Sql7 -->application Server --> Client的。。
我想在客户端所有数据输完时一起提交。可是当我用applyupdatas(-1)时程序就死了。
可能是更新的记录太多了。我更新一条时不会出现这样的问题!!!
不知道是为什么,请问各位大侠们。怎么解决这个让我困惑很久的问题!
 
如果一条正确而多条错误的话,建议每次更新都提交,
在AfterPost, AfterDelete中加上ApplyUpdates(-1)
 
这样是不行的,因为我用的是公文包方式,先从服务器中直载数据,
后存在文件中。到别处处理,最后要一起更新数据库的。因此不能
每次都提交。。
 
请各位三层高手加快讨论!我真的很急!!!
 
这是因为数据共享机制没有设计好!
你把数据取回来后,别的程序如果把数据删掉了,那您怎么update?
还有就是您的程序在update的时候,别人正在读,这也会死锁。
 
thtfsyh :
>>这是因为数据共享机制没有设计好!
>>你把数据取回来后,别的程序如果把数据删掉了,那您怎么update?
>>还有就是您的程序在update的时候,别人正在读,这也会死锁
不是这样的。我这个问题在设计期间就已经碰到了。在设计时,
就一个客户连接且在本机。可是就是在更新时就会死机。而且我的记录数
也不多,还不到100条记录。。可能是我的方法有错。
能不能谈谈你们的成功案例!你们是怎么解决这方面的问题的??
我真是感激不尽啊!!!
 
使用事务处理的方法保证数据正确提交。
uses mtx;
procedure Demo();
var
TransactionContextEx : ITransactionContextEx;
begin
TransactionContextEx := CreateTransactionContextEx;
try
{处理}
TransactionContextEx.Commit;
except
TransactionContextEx.Abort;
end;
 
这样解决不了问题的。
 
几个方法你试:
1:将DataSetProvider的UpDataModex调低级别
2:应用服务端的SQL的主键字段的ProviderFlags中的pfinKey设置为True;
3:客户端引入更新错误报警对话框。
New->Dialogs->Reconcile Error Dialog.
包含Cds的单元Use报警单元。
在Cds的最后一个事件中加入
HandleReconcileError(DataSet,UpdateKind,E);
从报警对话框中看倒底问题出在哪里。
Gook luck!
 
表结构拿出来看看吧。
BDE中的Packet Size设大一点?
 
表结构我都没设主键行吗???
如:
create table
( ID int ,Subject_Id int,Success_1 float, success_2 flost)
都是可以空的。。
>>BDE中的Packet Size设大一点?
这个怎么设??我好象用ODBC的。
 
报警对话框我也用了,可还是没反应啊!!!
 
你用ado试试!
 
完了,怎么没人要会啊???难道这问题不值得你们去回答???
快点吧!!剩四天了。。我真的死定了。我有李维的书。可是看了也还是解决不了。
如果有搞过的人请和我直接用oicq交谈,2297537。
我一定会给分的。。
 
delphi是4.0 or 5.0
 
用的是delphi5.0啊
 
除了灌点“加个主键”没别的了:(
你最好先找个最简单的例子做以下,然后慢慢扩大。
已经给cj发email了,不知道他什么时候收到
 
大哥,又是个没主键的表,加上主键罢...
还有,DataSetProvider有个什么属性(ResolveToDataSet?)改一下看(就是那个控制是
由谁生成sql语句的那个)
TDataBase用了吗?看看设置,毛病经常出在这里。
在服务器端调试一下,到底执行到哪里死的
 
不加 Key 会气死的。今天晚上我就遇到这个问题,
用 db1.applyupdates([table1,table2]) 时,有的表行,有的表不行,出错说 “不支持
嵌套事务“,找了半天,忽然想到加个 Key(table2永远只有一条记录,所以当初没加),
结果就搞定了。不过,我的是 Interbase,仅供参考。
 
如果一个表中必须有重复记录怎么办。
 
后退
顶部