我有如下问题:
在StringGrid的如下事件中更改表的某行某列的内容,为什么定位定不了???
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
begin
  with TADOTable1 do
    Open;
    Edit;
    if state = dsEdit then
    begin
      RecNo := ARow;
      Fields.Field[ACol] := Value;
      post;
    end;
end;
我用程序跟踪一下,在程序第一次启动时更改StringGrid同一列时表中的数据没有问题的更改过来了,但在程序不重起的情况下更改别的列的时候在post的地方出现提示为“无法定位数据的位置,有可能有多个列被操作”执行完之后发现表中的数据同一列有多个行被改变了,有哪位大侠能给我指点指点,代码出错在什么地方,如果对的话一定给高分!!!!!!!

解决方案 »

  1.   

    修改如下:
      with TADOTable1 do
        Open;
        RecNo := ARow; //建議用MoveBy
        Edit;
        Fields.Field[ACol] := Value;
        post;
      

  2.   

    用MoveBy我试过了,还是出现错误提示,有谁能够提供更好的方法修改一个表中的某行某列的值,我查询了一下Help里面好象没有关于定位的函数,请高手指教!!!!!
      

  3.   

    s:=sg.cells[7,7]                
    with TADOTable1 do begin
        Open;
        moveby(7);
        Fields.Field[6].asstring:=s;
        post;
    end;