with query1 do 
begin
    close;
    sql.clear;
    sql.text:='select * from table1 ';
    open;    if recordcount<>0 then
    begin
             if flatedit1.Text<>'' then
             begin
                 edit;
             fieldbyname('Pzbz_czbk').asfloat:=strtofloat(edit1.text);    
                 post;
             end;
    end;
end;为什么运行时报错说query1 Cannot modify a read-only dataset,我的Query1连的BDE数据源

解决方案 »

  1.   

    with query1 do 
    begin
        close;
        sql.clear;
        sql.text:='select * from table1 ';
        open;    if recordcount<>0 then
        begin
                 if flatedit1.Text<>'' then
                 begin                 requsetlive:=true
                     edit;
                 fieldbyname('Pzbz_czbk').asfloat:=strtofloat(edit1.text);    
                     post;
                 end;
        end;
    end;
    我这样做了为什么还是报相同的错呀
      

  2.   

    我给你说详细些吧设置RequestLive属性来说明执行查询时,是否允许BDE即时向应用程序返回对数据结果的修改。如果RequestLive 属性是默认值False,表示查询将返回只读的数据结果;反之,如
    果RequestLive属性是True,则返回修改的数据结果。但需要注意的是,RequestLive 属性是
    True并不能保证BDE一定返回修改的数据结果,它还有其他条件的限制。在激活一个TQuery
    组件后,可以通过查看CanModify属性值来决定BDE是否能返回修改的数据结果。
    另外,一般在使用Query时,不直接对数据进行编辑,而是通过SQL语句更灵活,也会减少消耗