通过ADOConnection1,DataSource1,ADOQuery1连接数据库,在插入完一条数据后,提示“ADOQuery1:CommandText does not return a result set”,可插入还是成功的,这是为什么?
请大家多多指教。

解决方案 »

  1.   

    代码如下:
    procedure TDemo.Button3Click(Sender: TObject);
    begin
      With ADOQuery1 Do
      Begin
        Close;
        SQL.Clear;
        SQL.Add('insert into tbl_user values (:a,:b,:c)');
        Parameters.ParamByName('a').Value:=trim(edit1.Text);
        Parameters.ParamByName('b').Value:=trim(edit2.Text);
        Parameters.ParamByName('c').Value:=trim(edit3.Text);
        Open;
      End;end;
      

  2.   

    With ADOQuery1 Do
      Begin
        Close;
        SQL.Clear;
        SQL.Add('insert into tbl_user values (:a,:b,:c)');
        Parameters.ParamByName('a').Value:=trim(edit1.Text);
        Parameters.ParamByName('b').Value:=trim(edit2.Text);
        Parameters.ParamByName('c').Value:=trim(edit3.Text);
        ExecSql;//用这个
      End;
      

  3.   

    用了ExecSQL后换了个错误提示:Access violation at address 1F487CAB in module 'msado15.dll'.Write of address 010D7018.
      

  4.   

    先生成一个sql 语句试试看!
      

  5.   

    SQL语言都可以用Exec..
    只有Select可以用open....
    ///
    INSERT前先ADOQuery1.Edit..
    With ADOQuery1 Do
      Begin
        Close;
        Edit;
        SQL.Clear;
        SQL.Add('insert into tbl_user values (:a,:b,:c)');
        Parameters.ParamByName('a').Value:=trim(edit1.Text);
        Parameters.ParamByName('b').Value:=trim(edit2.Text);
        Parameters.ParamByName('c').Value:=trim(edit3.Text);
        ExecSql;
      End;
      

  6.   

    ADOQuery1.SQL.ADD('insert into tbl_user values('+#39+Edit1.Text+#39+','+#39+Edit2.Text+#39+','+#39+Edit3.Text+#39);
      

  7.   

    用ADOCommand,执行
    ADOCommand.close; 
    ADOCommand.CommandText:='insert into table ...'; 
    ADOCommand.Exec; 
      

  8.   

    procedure TDemo.Button3Click(Sender: TObject);
    begin
      With ADOQuery1 Do
      Begin
        Close;
        SQL.Clear;
        SQL.Add('insert into tbl_user values (:a,:b,:c)');
        Parameters.ParamByName('a').Value:=trim(edit1.Text);
        Parameters.ParamByName('b').Value:=trim(edit2.Text);
        Parameters.ParamByName('c').Value:=trim(edit3.Text);
        //Open;
        EXECSQL;用这个语句就行了,因为你用的是INSERT语句,没有返回数据集,所以不能用打开命令。
      End;end;
    明白了吗/
      

  9.   

    ado不是用参数调用的,直接写入sql语句
    SQL.Add('insert into tbl_user values ('''+trim(edit1.Text+''','''+trim(edit2.Text)+''','''+trim(edit3.Text)+'''');
    execsql
    肯定行
      

  10.   

    ADOQuery非Select语句用ExecSQL方法的!Select语句用Active:=TrueADOCommand就只能用非Select的语句
    ADODataSet就只能用Select的语句http://lysoft.7u7.net
      

  11.   

    去微软的主页里下载一个MDAC 2.8 
    升级一下你的ADO,就可以了
    下载地址:
    http://www.microsoft.com/downloads/results.aspx?freetext=ado&productID=&DisplayEnglishAlso=on&DisplayLang=zh-cn
      

  12.   

    来晚了,晕ADOQuery1:CommandText does not return a result set对不返回记录集的操作要用execsql,返回的才用open简单点说吧,select 用open,update/insert用execsql