去掉这一行:
        query1.Open;

解决方案 »

  1.   

    去掉
    query1.active:=true;
    query1.Open;
    这两行
      

  2.   

    Query1.Actiove:=True 和Query1.Open 这两句作用是一样的,用一个就行.
    Open操作用在查询里,而你现在的操作是Insert ,所以不用Open操作,而用ExecSql操作. 所以去掉Query1.Active:=True;  和   Query1.Open 这两行.只保留  Query1.ExceSql这一句就行了. 
      

  3.   

    Open与ExecSQL是有区别的。
    你试试就知道。
    你用ExecSQL。
    基本上insert ,update ,alter table-----都要用ExecSQL表示执行这句话。
      

  4.   

    同意
    因为这些语句都是不需要返回结果的
    必须用execsql
    我一般用database.execute(sqlstr,params,false,nil)
    来进行sql操作