我的程序中有一段代码是将一个数据库中查询到的记录插入到另一个数据库中,我把这查询和插入这两步合成到一句SQL语句中,下面是我的那部分代码:
  for i := 0 to lb_temp.Count - 1 do
  begin
    jk_temp.Active := false;
    jk_temp.SQL.Clear;
    sql_query := 'insert into chaobiao(编号,户名) ';
    sql_query := sql_query + 'select 编号,户名';
    sql_query := sql_query + ' from sjk where 村名 =:name';
    jk_temp.SQL.Add(sql_query);
    jk_temp.Params[0].AsString := lb_temp.Items[i];
    jk_temp.ExecSQL;
    jk_temp.Active := true;
  end;
可以执行到jk_temp.ExecSQL;这句,可是当执行jk_temp.Active := true;时,就弹出错误提示框,提示框里所写的是:
           Error creating cursor handle.
请问这是怎么回事啊?请大家帮帮我,我现在很急,谢谢了!

解决方案 »

  1.   

    jk_temp.Active := true;這句真去掉, 用ExecSQL就行啦
      

  2.   

    只是插入记录,不需要设jk_temp.Active := true;啊
      

  3.   

    把 
    jk_temp.Active := false;
    jk_temp.Active := True;
    去掉,根本不需要!只要jk_temp.ExecSQL即可
      

  4.   

    同意楼上的,打开数据集才 active := true  或者  open的,
    类似楼主的操作,没有返回数据集,是 .execsql 的
      

  5.   

    为什么都喜欢用 Params[0] 这种不直观又麻烦的动作呢?
    直接Format字符串不好么?
    已经 execSQL了就不要  jk_temp.Active := true了
    分给优华吧
      

  6.   

    有返回值:open (如select )
    无返回值:execSQL(update,insert)
      

  7.   

    为什么在执行插入语句时,只有四个字段可以插入,其它字段却说类型不对?
        jk_query.SQL.Clear;
        sql_query := 'insert into chaobiao(村名,编号,户名,上月电量,表止码,表起码,新表止码,新表起码,倍率,上月电量,抄表标志) select 村名,编号,户名,上月电量,表起码,新表止码,新表起码,倍率,上月电量,抄表标志 from sjk where 村名=:name';
        jk_query.SQL.Add(sql_query);
        jk_query.Params[0].AsString := lb_temp.Items[i];
        jk_query.ExecSQL;
    我调试过,当只插入 村名,编号,户名,上月电量 时,可以执行插入语句,可当把其它字段也加上时,却弹出错误提示框: 'Type mismatch in expression',而且我单独插入这几个字段时,也是一样的问题,我都检查过了,它们的类型都一样的啊,因为我用PB、VB都做过,都能执行啊,请问这是怎么回事啊?