我在dbgrid 中输入数据时,当最后一个字段为空时,我按下回车或TAB它就触发post事件,但我的表设计时不能为空,所以会出错!我该怎么办,让它不保存?????????????????????????????????????????????????????

解决方案 »

  1.   

    在dbgrid的记录集中的beforPost事件中进行检查,如果数据不合法,就禁止提交,用abort即可;给你一段代码可以参考:
    procedure TfrmFillCredence.ADOQryDBBeforePost(DataSet: TDataSet);
    var errorMessage:string;
    begin
      errorMessage:= checkRecord();  AdoQryDb.Edit;  if ( errorMessage<>'') then
      begin
        showMessage(errorMessage);
        abort;
        exit;
      end
      else begin
        if (checkCode(AdoQryDb.fieldbyname('ccode').asstring)=false) then
        begin
          MessageDlg('输入的编码 '+AdoQryDb.fieldbyname('code').asstring+' 不存在,请重试!', mtWarning, [mbOK], 0);
          abort;
          exit;
        end;
        InitPost();
      end;
    end;
      

  2.   

    你如果只是想在dbgrid里显示数据,设置他的options的dgediting为false就行了。 
      如果想编辑数据,字段为非空而不录入数据,是肯定提交不了的,既然不能提交,你录入数据又有什么意义呢。如果可能,建议将字段改为可空.
      

  3.   

    beforepost事件里面判断
    不行就abort()
      

  4.   

    agree
    beforepost事件里面判断
    不行就abort()