在一个DBGRID中编辑一个表,请问如何控制不能为空的字段?比如,某字段不能为空,那么在我单击其他行导致表自动POST的时候要给出中文的提示,并将焦点返回到出错的地方。
在线给分。

解决方案 »

  1.   

    建义你最好不要这么做,还是弄几个edit来加入比较好,而且方便。
      

  2.   

    可以用Access数据库,把你要求的字段设置成主键
      

  3.   

    我原来一直是用EDIT来做的,现在对方要求这样,没办法。
      

  4.   

    你可以用dbEdit啊。那样客户也看不出来啊。
    和dbgrid的效果是一样的。
      

  5.   

    我现在想知道的是不用的DBEDIT等控件的情况下,如何实现,如果能用DBEDIT就没有问这个问题的必要了。
      

  6.   

    要求只能用DBGRID,不用其他DBCTRL,如何实现?
    ———————————————————————
    如同像EXCEL一样的编辑,但是要在GRID自动POST的时候(比如我单击其他行),判断不能为空的字段(屏蔽掉英文错误信息,给出中文提示)并将编辑焦点返回到出错的地方。
      

  7.   

    procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
    var
      i : integer;
    begin
      if ADOQuery1.FieldByName('不能为空的字段').AsString = '' then
      begin
        ShowMessage('中文提示');
        for i := 0 to DBGrid1.Columns.Count - 1 do
          if DBGrid1.Columns[i].FieldName = '不能为空的字段' then
            DBGrid1.Columns[i].Grid.EditorMode := True;
        Abort;
      end;
    end;
      

  8.   

    对字段的有效性判断应该在BeforePost事件内判断,
    procedure TForm1.qryBeforePost(DataSet: TDataSet);
    begin
      if VarIsNull(qry['name']) then
      begin 
        ShowMessage('名称不能为空');
        abort;
      end;
    end;
      

  9.   

    就是在连接的dataset的beforepost里面写判断!
    同意 yuejun(飞天红猪侠)  fengqingwanzhong(风情万种)
      

  10.   

    procedure TForm1.qryBeforePost(DataSet: TDataSet);
    begin
      if trim(qry['name'].asstring)='' then
      begin 
        ShowMessage('名称不能为空');
        abort;
      end;
    end;