为什么保存错误的代码不执行
各位高手,我想望商品表中输入商品,主键为商品号,倘若用户不小心,输入了重复的商品号,往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;
}
}
}