我在dbgrid中新增了一列(data).可是却不能对他进行赋值,总是提示数据库错误.
请问如何获得用户选择的那个单元的值,并对此单元通过代码进行赋值.    dbgrid1.Fields[2]与DBGrid1.Columns以及DBGrid1.Columns.Items[i]之间的区别. dbgrid1.selectedfield对自己加上的字段好象不能用呀. 多谢 多谢  多谢

解决方案 »

  1.   

    DbGrid1.DataSource.DataSet.FieldByName('field').as..
      

  2.   

    我的这个字段是在dbgrid中新增的.所以在adodataset中没有本来我也是想在adodataset里新增一个字段.可是新建后adodataset就打不开了.提示找不到新建的那个字段. i don't know why?
      

  3.   

    dbgrid中新增了一列(data).  需要调用createdataset才有效,但又会是你与数据库联系的表无效果。所以不可以的。但你完全可以加计算字段来代替达到你的要求。
      

  4.   

    更正:dataset中新增了一列(data).
      

  5.   


     还有,当我通过  dbgrid1.Columns.Items[5].Field.value:='yes';  来进行赋值时, 系统提示我 'Adodataset:dataset not in eidt or insert mode' 这里应该怎么设置那?
      

  6.   

    OnCalcFields事件中进行修改啊。其实就跟用data字段一样了。
      

  7.   

    Adodataset.edit;或则Adodataset.append;
    后 dbgrid1.Columns.Items[5].Field.value:='yes'
      

  8.   

    好,可以修改了.    adodataset1.Edit;  dbgrid1.Columns.Items[5].Field.value:='yes';  可是,当我点击其他单元的时候,原来那个已经被标记的单元中的值就自动消失了,又变成
      了空白.不知道该怎么设置.
      

  9.   

    以下是我的代码:
    procedure Test.DBGrid1CellClick(Column: TColumn);begin
           adodataset1.Edit;
         if dbgrid1.Columns.Items[dbgrid1.FieldCount-1].Field.value='yes' then
            begin
             DbGrid1.DataSource.DataSet.FieldByName('report').AsString:='no';
              dbgrid1.Refresh;
                 end           else       begin
         DbGrid1.DataSource.DataSet.FieldByName('report').AsString:='yes';
          dbgrid1.Refresh;
            end;可是,当我点击其他单元的时候,原来那个已经被标记的单元中的值就自动消失了,又变成
      了空白.不知道该怎么设置.