procedure TForm1.DBGridEh1ColExit(Sender: TObject);
var
str:string;
begin
  str:=DBGridEh1.SelectedField.AsString;
  with dm.ADOQuery1 do
  begin
  dm.ADOQuery1.Close;
   dm.ADOQuery1.SQL.Clear;
   dm.ADOQuery1.SQL.Add('select * from xue where ID='''+str+'''');
   dm.ADOQuery1.Open;
  if dm.ADOQuery1.RecordCount<>0 then
     begin
     messagedlg('<'+str+'>已存在 ',mtError,[mbok],0);   //  exit;
   end;   end;
end;
上面是我写的一段判断dbgrid中输入是否与原来数据重复的程序,程序可以判断出重复的字段,但是判断之后dbgrid就是空的了,而且不能再继续往里面输入东西了,请高手们指点一下程序的问题,多谢

解决方案 »

  1.   

    你的程序放错地方了,假如你的DBGridEh1你连接的DataSet是ADOQuery2,则把你的程序放到ADOQuery2的BeforePost里,然后把Exit换成Abort
      

  2.   

    代码如下,请你编译一次,再执行编译而成的EXE文件(请还要DELPHI环境中执行)procedure TForm1.DBGridEh1ColExit(Sender: TObject);
    begin
     try
     except
     on E: Exception do
         begin
          if pos('PRIMARY KEY', UpperCase(E.Message)) > 0 then
          begin
             messagebox(0,'已存在该笔记录!', '错误', 0);
             Exit;
          end     end;
     end;
    end;