估计没有,只有你在输入产品名称后先对数据库中进行查询,要是已经存在的产品名就报非法产品名。
估计这也是唯一的办法!/*************************************/
/*1、MY TOOL:*************************/
/*2、Delphi,Oracle,Sybase,C++/C*******/
/*3、PROJECT:*************************/
/*3、Boss*****************************/
/*4、为了五星的目标希望你早点结贴*********/
/*5、在线技术讨论(QQ):68123095*********/
/*************************************/
估计这也是唯一的办法!/*************************************/
/*1、MY TOOL:*************************/
/*2、Delphi,Oracle,Sybase,C++/C*******/
/*3、PROJECT:*************************/
/*3、Boss*****************************/
/*4、为了五星的目标希望你早点结贴*********/
/*5、在线技术讨论(QQ):68123095*********/
/*************************************/
/*************************************/
/*1、MY TOOL:*************************/
/*2、Delphi,Oracle,Sybase,C++/C*******/
/*3、PROJECT:*************************/
/*3、Boss*****************************/
/*4、为了五星的目标希望你早点结贴*********/
/*5、在线技术讨论(QQ):68123095*********/
/*************************************/
File->New->Other->Dialog->Reconcile Error Dialog:
procedure TForm1.Table1UpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
HandleReconcileError(DataSet,UpdateKind,E);
end;
procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
//判断E的错误类型,如果是PK重复着
Application.MessageBox('错误!此产品已经存在请输入其他名称或取消操作.','错误',MB_ICONERROR+MB_OK );
Abort;
end;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
HandleReconcileError(DataSet,UpdateKind,E);
end;
if (E is edbengineerror) then
if (e as edbengineerror).errors[0].errorcode=9729 then
begin
messagebox.......//产品名重复
end;
2、不要用DBGrid,改用非数据敏感控件,例如Edit,Memo
3、在Table的 PostError事件中写:
if (E is EDBEngineError) then
case (E as EDBEngineError).Errors[0].ErrorCode of
9729:
begin
messagedlg('关键字重复',mtWarning,[mbOK],0);
Aborts
end;