为什么保存错误的代码不执行

liujinglei 2003-08-18 09:07:32
各位高手,我想望商品表中输入商品,主键为商品号,倘若用户不小心,输入了重复的商品号,往Sql Server 存储时,会出现错误。在TTable中有一个事件OnPostError,C++Builder的说明中指出,保存时会执行它,我的代码如下,但该段代码从不执行,为什么?




void __fastcall TDataModule1::t_goodsPostError(TDataSet *DataSet,
EDatabaseError *E, TDataAction &Action)
{
int iDBIError;

if (dynamic_cast<EDBEngineError*>(E) != 0)
{
iDBIError = dynamic_cast<EDBEngineError*>(E)->Errors[0]->ErrorCode;
switch (iDBIError)
{

case eRequiredFieldMissing :
MessageBox(0, "有些字段没有填写.", "警告" ,MB_OK);
return;
// 主键不唯一
case eKeyViol :
MessageBox(0, "不能更新商品表,商品号有重复.",
"警告" ,MB_OK);
return;
}
}
}
...全文
37 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujinglei 2003-08-19
  • 打赏
  • 举报
回复
上述的代码在C++ Builder的例子中也有,奇怪的是它的代码也不执行

该代码在 D:\Program Files\CBuilder5\Examples\DBTasks\DBErrors下,请您测试一下,OnPostError事件也不执行
myan18 2003-08-18
  • 打赏
  • 举报
回复
OnPostError事件是记录提交时产生的。
如果你是点击按钮保存记录的,应把code写到OnButtonClick事件中。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧