我想在DBGrid中选定一行之后,能够把这一行的某个字段的值改一下,但不是在DBGrid里面直接改,而是通过赋值:
ADODataSet5.Edit ;
ADODataSet5.FieldByName('note_colf').AsInteger := **** ;
ADODataSet5.Post ;提示错误:
缺少更新或刷新的键列信息我怎样能实现这样的功能呢?

解决方案 »

  1.   

    修改dbgrid属性:dgrowselect:=true;
      

  2.   

    ADODataSet5.Post发生的错误,因为是更改值,所以我觉得只要把改动的值写过就行了,不用把一行所有的值都写过吧?
      

  3.   

    在ADODataSet5.AfterPost 里做刷新不行吗
      

  4.   

    我这儿没出现什么类似的问题。
    unit Unit1;interfaceuses
      SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
      Dialogs, Forms,StdCtrls, DB, ADODB, Grids, DBGrids,
      dbgrid, Dta_sour;type
      TForm1 = class(TForm)
        TDataSource1: TDataSource;
        TDBGrid1: TDBGrid;
        ADOConnection1: TADOConnection;
        ADs1: TADODataSet;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADs1.Edit;
      Ads1.FieldByName('Name').AsString:='HHHH';
      Ads1.Post;
    end;