请将query2.active:=true 改为 query1.execsql;query2.active:=true 只返回所选的数据集,而不能对表进行read/write操作(相当于query2.open),而query2.execsql则对数据表进行操作(insert,delete等);
:-)

解决方案 »

  1.   

    var_001的答案很正确。
    另外有一点要补充。
      根据willzjy所说的情况来看,sjk已经创建了,query2.sql.text在query2创建的
    时候也已经创建了,在query2.sql.text:=sjk的时候,query2.sql.text原来指向的
    内存区域在丢弃之前没有释放释放,频繁的使用可能会产生某种地址错误。
      

  2.   

    (1)注意你的域("编号")一定要是没有唯一索引属性的,而是有重复的属性;
    (2)做数据表数据更新的一般方法应该是:
       Var SqlStr:WideString;//数据更新语句
       With Query2 do
       begin
         Close();
         Sql.Clear();
         Sql.Add(SqlStr);
         ExecSql();
       end;新年快乐!
      

  3.   

    肯定是没有执行Query.clear ,动态SQL语句最好安上铺兄弟的规范写,易董
      

  4.   

    是的!我同意各位的看法!
    Query很好用!SQL真好!
      

  5.   

    返还数据集的操作(select...)要用Query.Open OR Query.Active:=True
    不返还数据集的操作(update...)要用Query.ExeSQL