问一下query查询的结果后,我想对其中的一些数据进行编辑后再用dbgrid显示出来,不知道要怎么做哦,
查询出来后好像都是read状态,没办法编辑
帮帮我哦

解决方案 »

  1.   

    if ADOQuery.FieldByName('aaa').ReadOnly then
      ADOQuery.FieldByName('aaa').ReadOnly := False;
      

  2.   

    在编辑前先使query处于编辑状态,如下顺序
    adoquery.edit;adoquery.fields.field[1].value := 12;
      

  3.   

    with AdoQuery do
    begin
      Edit;
      .............编辑修改.............
      Post;
    end;
      

  4.   

    query在open后好像是不能设成edit状态的,设置后也是显示不能被modify
      

  5.   

    with AdoQuery do
    begin
      Edit;
      FieldByName('address').Value:=Trim(sValue);
      Post;
    end;  
    只有在OPEN后才能这样修改的。
      

  6.   

    不好意思,再问一下,修改后在dbgrid里体现不出来,我要怎么在debug状态下看query里的值?看我有没有修改成功
      

  7.   


    with OraQuery1 do
    begin
    //
    end
    with OraSQL1 do
    begin
    //
    end上面是我的用法了,我用的是ODAC连接的Oracle数据库~!或许对楼主有参考价值~!
      

  8.   

    with OraSQL1 do
    begin
    //
    end
    这个中间要怎么写啊,没用过这个控件还有,听说query有个RequestLive属性,为什么我在delphi里面找不到这个属性?
      

  9.   

      with ShowQuery do
      begin
        close;
        sql.Clear;
        tempsql := 'select * from t_table';
        sql.Add(tempsql);
        open;      first;
          while not eof do
          begin
            edit;
            if fieldbyname('PersonSum').ReadOnly then
              fieldbyname('PersonSum').ReadOnly := false;
            fieldbyname('PersonSum').Value := '20';
            post;
            next;
          end;
        end
      end;用这种方式,为什么修改数据没有成功
      

  10.   

    能不能帮我看看这段啊,为什么修改数据不成功呢with ShowQuery do 
      begin 
        close; 
        sql.Clear; 
        tempsql := 'select * from t_table'; 
        sql.Add(tempsql); 
        open;       first; 
          while not eof do 
          begin 
            edit; 
            if fieldbyname('PersonSum').ReadOnly then 
              fieldbyname('PersonSum').ReadOnly := false; 
            fieldbyname('PersonSum').Value := '20'; 
            post; 
            next; 
          end; 
        end 
      end; 用这种方式,为什么修改数据没有成功
      

  11.   

    query  RequestLive属性为TRUE
    query 中的查询必须是单表,不能是复合表即查询两个以上的表,如果是多个表必须再另加个query1, 根据当前query行中的列值在query1中修改
      

  12.   

    我用这种方法现在可以修改成功了,可是数据库中数据也被更改了,我不需要数据库也被更改啊,只是想显示的时候改下显示数据而已,怎么办哦with ShowQuery do 
      begin 
        close; 
        sql.Clear; 
        tempsql := 'select * from t_table'; 
        sql.Add(tempsql); 
        open;       first; 
          while not eof do 
          begin 
            edit; 
            if fieldbyname('PersonSum').ReadOnly then 
              fieldbyname('PersonSum').ReadOnly := false; 
            fieldbyname('PersonSum').Value := '20'; 
            post; 
            next; 
          end; 
        end 
      end; 
      

  13.   

    建立一个计算字段那你就在
    procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
    begin
      DataSet.fieldbyname('PersonSum').Value := '20'; 
    end;
    事件里写好了。
      

  14.   

    取消数据库操作:adoquery.cansel,看看你想用再什么地方,不过看你的代码好象太简单了,不懂你具体要实现什么东西?