我在DBGrid中新增一条记录后,点击另外一条记录时,会自动POST,但是现在我需要判断记录中的一些必填项是否已填写,如果未填写,中断提交,让焦点聚集到此单元格,如何实现,求演示代码

解决方案 »

  1.   

    在beforepost事件中写代码就行了啊。
      

  2.   

    我如何在beforepost中当条件满足时取消POST并聚焦到未填的单元格?能代码说明吗?
      

  3.   

    if 某项为空 then abort;
      

  4.   

    if 某项为空 then 
    begin
       showmessage('某项不能为空!');
       abort;
    end;
      

  5.   

    procedure TBOMListForm.BOMQueryBeforePost(DataSet: TDataSet);
    begin
    if DataSet.FieldByName('BILLNO').AsString = '' then
        Raise Exception.Create('字段:"单据编号"不能为空,请重新填写后再提交!');
    end;
      

  6.   

    调整QUery的属性就可以了。
    Query.CursorType:=ctStatic;
    可以先保存到数据集上。保存用QUery.UpdateBatch提交道数据库。
      

  7.   

    if adoquery1.fields[0].isnull then
    begin
     //聚焦到fields[0]所在的单元格
      dbgrid1.selectfield := adoquery1.fields[0];   
     //终止提交
      abort
    end;
      

  8.   


    //如果字段aaa为空
    if adoquery1.fieldbyName('aaa').isnull then
    begin
     //聚焦到字段aaa所在的单元格
      dbgrid1.selectfield := adoquery1.fieldbyName('aaa');   
     //终止提交
      abort
    end;这个操作很简单,你可以自己写例子试试看。
    没必要什么问题都回答得那么详细,那还不如干脆帮你把程序写完算了