我想在输入数据后先判断一下数据库中是否已有此数据,有则给出提示,没有才提交。用
if not ADODataSet1.Locate('ID','DBEdit1.Text,[]) then
ADODataSet1.Post
else showmessage('数据已存在');
做判断,即使是第一次输入的数据也会执行else后的语句我试了一下,去掉其他语句,只有ADODataSet1.Locate('ID','DBEdit1.Text,[])一条语句数据就被提交了
这是为什么呢?

解决方案 »

  1.   

    你不会忘了吧,在Dataset中数据只要在记录间一滚动就是自动Post的呀
      

  2.   

    你另外加一个adodataset控件,然后在你的adodataset1的beforepost事件中写:这是我的代码:procedure TProgModuleForm.ModulesQueryBeforePost(DataSet: TDataSet);
    begin
      if not (DataSet.State = dsEdit) then
        With SelQuery do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select MENUGROUP_ID from MENUGROUP where MENUGROUP_ID= :MGROUP');
          Parameters.ParamByName('MGROUP').Value := ModulesQuery.FieldByName('MENUGROUP_ID').AsString;
          Open;
          if not eof then
            Raise Exception.Create('该模块组编号已存在,请重新输入!');
          close;
        end;
    end;