with query1 do
begin
 close;
 sql.clear;
 sql.add('select * from mr');
 sql.add('where mr.num= ''51790''');
 prepare;
 open;
end;dbgrid的编辑状态都设好了,
但是设置query1.requestlive:=true时运行不成功,报错表或视图不存在。 其中query1连的是ORACLE

解决方案 »

  1.   

    查询的时候要设query1.requestlive:=false;
    另外,少括号:
    with query1 do
    begin
     close;
     sql.clear;
     sql.add('select * from mr ');//这句少括号
     sql.add('where mr.num= ''51790''');
     prepare;
     open;
    end;
      

  2.   

    不是括号,是空格,另外,
    sql.add('where mr.num= ''51790''');
    这句感觉有问题,
    如果库里是数字型(int、float...)
    不能有单引号:
    sql.add('where mr.num=51790');
      

  3.   

    先在query1的属性面板中设置requestlive为false,然后在程序中改为true还是不行.
    虽然运行不错,但dbgrid字段改不了!
    with query1 do
    begin
     close;
     sql.clear;
     sql.add('select * from mr');
     //sql.add('where mr.num= ''51790''');
     prepare;
     open;
    end;
    query1.RequestLive:=true;
      

  4.   

    要改字段啊?
    设DBGrid的Options的Editing为true,(属性面板就有)
    还有ReadOnly为false
      

  5.   

    with query1 do
    begin
     close;
     sql.clear;
     sql.add('select * from mr  ');//多点空格即可了
     sql.add('where mr.num="51790"');//这样即可了
     prepare;
     open;
    end;