用Table作为DBGrid的数据源时,可以直接在DBGrid上面修改数据.
如果用Query作为DBGrid的数据源,能不能直接在DBGrid上修改数据?
如果可以要做哪些设定?

解决方案 »

  1.   

    有什么特别的设置没有?我试过把Query的RequestLive属性设为True的时候,可以在DBGrid中修改数据,但是改过的数据好像并没有保存,重新打开之后发现它们没有变.
      

  2.   

    前提条件:Query的SQL语句必须从一个表中取得,如果两个或以上的表联合查询就不可以直接修改了。
      

  3.   

    前提条件:Query的SQL语句必须从一个表中取得,如果两个或以上的表联合查询必须有一唯一键(一般用主键)对应起来.
      

  4.   

    这样SQL的限制很多 比如不能有DISTINCT 不能是多表的 不能。
    提交方式 看一下 
    要是ADOQUERY的话可以直接改的
      

  5.   

    一样,我还是比较喜欢用QUERY不喜欢TABLE
      

  6.   

    Query的RequestLive属性设为True后要用Query.ApplyUpdates进行提交,例:
    with Query do
    begin
       Close;
       SQL.Clear;
       SQL.Text:='Select * from table';
       RequestLive:=True;
       Open;
       Edit;
    //进行修改
       Try;   
          ApplyUpdates;//提交
          CommitUpdates;//清空缓冲区
       Except
          ...
       End;//end try
    end;//end with
      

  7.   

    Query.Close;
    Query.SQL.Clear;
    Query.SQL.Add();
    Query.Prepare;
    Query.Open;
    Query.RequestLive := True;
      

  8.   

    用Query时也可以答案是肯定的,但当你要用到Select多个表时,你得注意了