小弟想执行一个插入后刷新表

query1.execsql;
query1.refresh;加了这句就报错
要怎样才不会出错

解决方案 »

  1.   

    Query1.ExecSQL后,Query1实际已经关闭。当然不能刷新了
      

  2.   

    直接加Open是错的对于需要返回数据显示的,比如Select ... From,要用Close/Open
    with Query1 do begin
     Close; // 先关闭
     SQL.Clear;
     SQL.Add('select * from t1');
     Open; // 再打开
    end;
    // 现在Query1是打开状态对于不需要返回数据结果的,比如:Insert, Update, Delete,用ExecSQL
    with Query1 do begin
     Close; // 必须保证是关闭的
     SQL.Clear;
     SQL.Add('update t1 set f1=3');
     ExecSQL; // 执行update语句
    end;
    // 现在数据集是关闭的,如果此时用Open,是无效的,它还是针对update语句的操作,没有返回结果,重新执行一次而已, Query1是没有数据返回的要想显示,必须重新赋值sql值,再Open