续:三层结构的出错处理(400分)(200分)

  • 主题发起人 主题发起人 qlw
  • 开始时间 开始时间
Q

qlw

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题和 http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=248454
是一样的,这样这个问题是400分。请大家帮忙看看是怎么回事,或者
哪位E文好的,帮我把它译成E文也可以



一个三层结构,在服务器端的TProvider的 OnUpdateError 和客户端的 clientDataset 的

OnReconcile中都设有出错处理。服务器显示错误码:edit1.text:=inttostr(E.ErrorCode);

客户端用delphi提供的Reconcile Error Dialog。

试验时,在客户端修改一条数据前人为先将其修改,客户端更新时,能够触发clientDataset

的OnRecncileError 事件,并能弹出Recncile Error Dialog.服各器端亦能正确触发,看来并

无不妥之处。

后来程序使用了外键来实现参照完整性。

调试时,在主表中加一条被参照的表中没有的记录,破坏其参照完整性。在服务器端发现

Tprovider的OnUpDateError事件触发 ,并获得正确的错误代码9733. 而客户端没有触发出错

处理,出现EOleException错误,然后死机了。


 
我使用Win98+MSSQL7+Delphi5+TSocketConnection,好象没有出现你所说的那中情况出现!
 
我用win98+interbase+d5+dcom

MsSQL7可以在98下用吗,用不用装网卡?要多少M内存?
 
试过多次:
* 加入一条主关键字已有的记录,产生EDBClient意外,但不会触发TclientDataset
的OnEditError事件。

* 删除一条被主表参照的记录,产生EOleException意外,数据成功传送到服务器,
但不触发OnReconcileError事件,似乎EoleException来的更快。

实在没辙,只好在客户端这么写:
try
clientDatamodule.EditClientDataSet.ApplyUpdates(0);

except
on A:EoleException do showmessage('可能违反了参照完整性:'+#13+
A.Message +#13+
'在主表删除前不能删除从表记录');

on B:EDbClient do showmessage('可能违反了数据的一致性:'+#13+
B.Message+#13+
'主关键字冲突');
end;

笨的要命,呵呵
各位大虾有什么好的解决方法?
 
换换数据库试试。

我又试了以下,好象也没有问题。

Winnt4+sp4+Mssql7+delphi5+pack1+TDComConnection
 
整了一个中午,找到错误了

问题出在服务器端的OnUpdateError事件处理中,我想获得数据库的错误代码

并翻译出来,我用:

if E.ErrorCode<>0 then
if (E.OrginalException is EDBEgineError )then
begin
翻译错误码
end;

程序在这里出错但不提示错误,而是在客户端出现意外错误,真是有趣

EUpDateError和EDBEngineError都继承自EDatabaseError的,但是在这里应

在它们之间做类型转换:

E.OrginalException as EDBEngineError

就好了

这个问题总共是400分的,好心痛的说,有没有什么办法收回一部分的?

 
把分给我,我再还给你。嘿
 
再注册一个,分给它,它再提一个问题,分给你
 
呵呵,千中元,不管我隐藏的多深总能被你给找出来
过两天跑路的时候说不定还要去广州去投奔你呢,
保护费在这儿先预支了吧

To All:
<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=248454">这里</a>是另外200分,分了吧
 
sigh,我现在离广州远着呢:(
等会给你发封Email
 
老千:
收成不好?看我为你强力充电
 
后退
顶部