如何在DBgrid中插入一个自增的字段?恳请说的具体一些

解决方案 »

  1.   

    你是说自动增加的序号吗?
    有两种方法?
    第一种:在DBGrid的DrawColumnCell事件中:
    procedure TDictateFRM.DBGridEh1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
      with (Sender as TDBGrid).DataSource.DataSet do //画序号
      begin
        if DataCol = 0 then //第一列
        begin
          if not (state in [dsEdit, dsInsert]) then
            (Sender as TDBGrid).Canvas.TextRect(Rect, Rect.Left + 15, Rect.Top +
              2,
              IntToStr(Recno));
        end;
      end;
    end;
    第二种:
    先在dbgrid的数据集adoquery等新增一个计算字段(字段1)
    然后在数据集的OnCaclFields事件:
      DataSet.FieldByName('字段1').AsInteger:=DataSet.RecNo;
      

  2.   

    第二种:
    先在dbgrid的数据集adoquery等新增一个计算字段(字段1)
    然后在数据集的OnCaclFields事件:
      DataSet.FieldByName('字段1').AsInteger:=DataSet.RecNo;用这种方法,在DBGrid里显示出来的是:-1
                                        2
                                        3
    这是怎么回事啊?
      

  3.   

    把锁定模式变为乐观批处理 然后append一条记录进入数据集  不更新数据库
      

  4.   

    取RecNo的话第一个要取绝对值 偶也不知道怎么回事 但是这样就行
    DataSet.FieldByName('字段1').AsInteger:=abs(DataSet.RecNo);
    其他的字段没多久显示出来是因为你没给数据库里的字段加到数据集组件上 双击你的DATASET
    右键    ADD FIELD...