既然是select语句,应该用
query1.Open;
而不是
query1.ExecSQL;

解决方案 »

  1.   

    是不是由于第一次是不是没有建立相应的db,所以能够执行成功。
    而第二次表已经建立,所以操作失败。
    选择一下BatchMove的Mode,然后再执行看看。
      

  2.   

    为什么老是在第一次query1.execsql时提示‘table is readonly!’???? 
    为什么用两个query分别执行就可以不出现这个错误??? 
    为什么把两次抄作顺序反过来就可以呢?用了close还不可以吗? 
    怎么解决呢? 
    +++++++++++++++++++++++++++++++++++++++
    1:query1.open;
       query1.
    有事,等一等
      

  3.   

    BatchMove在执行时,目标数据表是不是不能打开?
      

  4.   

    第4行Sql语句写错了:form应为from
      

  5.   

    你加加错误诊断语句啊!如果不知道是否反回查询结果那还是改改你的程序!如:
    Try
    table1.tablename:='c:\11.dbf'; 
    query1.close; 
    query1.sql.clear; 
    query1.sql.add('select table1.a,table1.b,table2.c form table1 inner join table2 on table1.a=table2.a'); 
    query1.open;
    Except
    query1.execsql; 
    End
    batchmove1.source: =query1; 
    batchmove1.desktination:=table1; 
    batchmove1.execute; Try
    table1.tablename:='c:\22.dbf'; 
    query1.close; 
    query1.sql.clear; 
    query1.sql.add('select * from table3'); 
    query1.open;
    Except
    query1.execsql; 
    End
    batchmove1.source: =query1; 
    batchmove1.desktination:=table1; 
    batchmove1.execute; 
    你试试这个看啊!先打开query,而后在用.execsql这个方法清除。
      

  6.   

    问题发现了.
      原来我不知在什么时候把query1.requestlive设为true
      当运行时,执行的内连接查询的结果是readonly的。
      大概是这个原因才报错吧。