如何在某一字段中判断重复的值并进行提示(不要Delphi的Debug系统提示) 2、如何将数据库错误信息用自己的语言显示在对话框里?(100分)

  • 主题发起人 主题发起人 Sachow
  • 开始时间 开始时间
S

Sachow

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序里有一些字段是不能有重复的值的,我希望在这些字段里输入值时对该值进行判断,如果字段里已经有相同的值,就给出提示,不要等到BDE放出错误提示,这样该如何实现?我用Locate语句没成功。
 
在字段的onValidate事件中写代码:
if 重复 then
begin
showmessge('重复');
abort;
end;
判断是否重复是用Query,SQL语句.


 

const
eKeyViol = 9729;
在table的onposterror事件中写如下代码
procedure TDM.CustomerPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then
begin
MessageDlg('Unable to post: Duplicate Customer ID.', mtWarning, [mbOK], 0);
Abort;
end;
end;

2:
如果错误信息不能用前面的方法捕获,可惜如下代码实现


procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := AppException;

end;

procedure TForm1.AppException(Sender: TObject; E: Exception);

begin
showmessage('关键字不能重复');
abort;
end;

procedure AppException(Sender: TObject; E: Exception);
必须定义载创体类中


 
onvalid时:
with queryvalid do
begin
sql.clear;
sql.add('select * from table1 where uniquefield=''' + edit1.text + '''');
active:=true;
if not eof then
begin
showmessage('this input is valid!');
edit1.text:='';
end;
active:=false;
end;
 
agree cytown
 
大家都得差不多了。
 
呵呵,可以TRY呀,
try
something
except
showmessage('错了!');
end;
记得有人把DELPHI的几个文件汉化了,把他放到系统里,E文变中文
 
(我本来没给这个问题出100分的,但谁知问题一发出去却变成了100分……我好命苦
啊!!才提了两个问题就只剩30分了……)
谢谢各位大侠,特别是cytown和liu JZX的提点,我本来也想用Edit或是
InputQuery来输入的,这样做就比较好判断了,但我还想使程序提供更多的选择,
即可以在DBGrid里直接输入,但这样做就遇到了上面的困难……
 
try
yourtable.post;
except
showmessage('保存错了!');
end;
or u can add code in table's before post to confirm all input value is ok.
 
对不起各位了,我整整一个星期都没法连上大富翁,所以一直没能让本问题结案。
在此在谢谢Liu JZX君,我试用您提供的第一各方法成功了(第二种不行)。
 
对不起,刚才好像忘了把分发出去 @_@
 
后退
顶部