是这样的,我要把当前记录的值作为新增加的值,当我点击增加的时候,把数据库当前记录的值返回给DBEDIT,然后,我在某些DBEDIT进行修改,然后进行保存,我怕我没有说清楚,我在这里提醒一下.千万不认为是修改的某一条记录,如果是这样只会覆盖以前的值.

解决方案 »

  1.   

    那就别用dbedit了呗
    如果用,你点增加,你先把当前记录的值放在一个变量里,然后赋给dbedit
    这样就行了
      

  2.   

    在DBGRID的CELLCLICK事件中把当前记录值放到EDIT
    如:
    if adoquery1.recordcount<>0 then
    begin
    with adoquery1 do
    begin
    edit1.text:=fieldbyname('xm').asstring;
    .
    .
    .
    end;
    end;
    在保存按钮中写:
    简略写一下:
    with adoquery1 do
    begin
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('insert into student(xm,xb....)values(:xm,:xb...)');
    adoquery1.params.parambyname('xm').asstring:=edit1.text;
    ........
    execute;
      

  3.   

    也可以先将当前记录的值保存到一组变量中,当增加时APPEND,再依次赋给各字段,这样就可以在数据感知控件中表现出来,可以修改了。
      

  4.   

    function TfrFixoprDM.copyToInsert: Boolean;
    var
      bookMark: TBook;
      cdstemp: TClientDataSet;
      i: Integer;
    begin
      Result := True;
      try
        try
          cdstemp := TClientDataSet.Create(self);
          bookMark := cdslist.GetBook;
          cdstemp.CloneCursor(cdslist, False, False);
          cdslist.Append;
          cdstemp.GotoBook(bookMark);
          for i := 0 to cdslist.FieldCount - 1 do
            cdslist.Fields.Fields[i].Value := cdstemp.Fields.Fields[i].Value;
        finally
          cdstemp.Free;
        end;
      except
        MsgBox('数据操作错误');
        Result := False;
      end;
    end;