现在一问题如下:
我在DBgrid中插入一条新的记录,此记录的内容为我最后一次插入的记录数据复制过来的。也可理解为我要在DBGRID中插入一条记录是对我最后一次的数据进行复制。

解决方案 »

  1.   

    你可以在表中给一个序号字段按最后插入的数据按序号(比如最大序号)插入后刷新即可。insert into table1 from table1 where id=最大
      

  2.   

    用一个DataSet把最后一次的记录先存起来,在新增的时候从DataSet中取数据。我想这个方法应该可以.
      

  3.   

    var
      FieldValue:Array of string
    dataset.last
    ...
    setlength(FieldValue,dataset.fieldcount)
    for i:=0 to dataset.fieldcount-1
      fieldvalue[i]:=dataset.fields[i].asstring
    ........
    然后再倒到dbgrid中
    .............  
      

  4.   

    在dataset事件中加代码 ,
    1、数据插入前,取最后一条记录的值,记录到变量中。
    2、插入一条记录
    3、根据变量的值写入(或计算处理后)写到新增加的记录中。插入前:procedure TDM.AQKfBeforeInsert(DataSet: TDataSet);
    begin
      if Aqkf.RecordCount > 0 then
      begin
        flbm := trim(aqkf.FieldByName('客户编码').AsString);
        flbm := inttostr(strtoint(flbm) + 1);
        Func.OpenKf;
        if odd(Length(flbm)) then flbm := '0' + flbm;
        while aqkf.Locate('客户编码', flbm, []) do
        begin
          flbm := inttostr(strtoint(flbm) + 1);
          if odd(Length(flbm)) then flbm := '0' + flbm;
        end;
      end
      else Flbm := '01';
    end;插入后:
    procedure TDM.AQKfAfterInsert(DataSet: TDataSet);
    begin
      aqkf.FieldByName('客户编码').AsString := flbm;
    end;