部分代码如下:
Query1.SQL.Add('insert emailtable values ('''+edit2.Text+''', '''+edit3.Text+''' ,'''+edit4.Text+''', '''+datetostr(Date)+''', '''+memo1.Text+''')');
其中 edit2.edit3.edit4和memo1是窗体上控件;
     表结构:序号自动生成的,姓名(char(40)),班级(char(40)),特长(char(40)),录入日期(就取系统时间),备注(text型)
运行后报错:
project project1.exe raised exception class ENoResultSet with message 'Error creating cursor handle'. Process stopped.
可一看数据库里已添加了新记录,为什么呢,那错了?高手指点我。

解决方案 »

  1.   

    先赋值:
    Query1.RequestLive:=true
    RequestLive为false时Query1的结果集是不可改写的。
    delphi帮助中RequestLive的含义:
    Specifies whether an application expects to receive a live result set from the Borland Database Engine (BDE) when the query executes.  ^_^
      

  2.   

    Error creating cursor !!!!!!!!!!!!!!
    很明显是创建游标句柄错误了,
      

  3.   

    你这样试试:
    query1.close;
    query1.sql.clear;
    query1.sql.add('insert into emailtable (姓名,班级,特长,录入日期,备注) ');
    query1.sql.add('values (:a1,:a2,:a3,:a4,:a5) ');
    query1.parambyname('a1').asstring:=edit2.text;
    query1.parambyname('a2').asstring:=edit3.text;
    query1.parambyname('a3').asstring:=edit4.text;
    query1.parambyname('a4').asdate:=date;
    query1.parambyname('a5').asstring:=memo1.text;
    query1.execsql;
      

  4.   

    如果sql语句已经正确,你是否使用了Open执行sql语句?
    如果是的话,改成Insert Into .... 用ExecSQL试试。
    Open有返回记录集(当然也可能是空),ExecSQL通常在不用返回记录集的时候使用。
      

  5.   


    下面这样写
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('insert into khb1(aa,bb) value('+#39+edit1.Text+#39+','+#39+edit2.Text+#39+')');
    Query1.ExecSQL;
    end;end.
      

  6.   


    你的写法 insert 后面必须有into
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('insert into khb1(aa,bb) values('''+edit1.Text+''', '''+edit2.Text+''')');
    Query1.ExecSQL;
    end;end.
      

  7.   

    只需要把 query1.open 改成 execsql 就可以了,执行插入语句不能返回记录集