procedure TForm1.BitBtn6Click(Sender: TObject);
//var zd: string;
//tj: string;
//sql:string;
begin//ADOQUERY1.ConnectionString:='Provider=SQLOLEDB.1;Password=silk;Persist Security Info=True;User ID=sa;Initial Catalog=silkmg;Data Source=192.168.102.100';//zd:=combobox2.Text;
//tj:='';
//if combobox2.ItemIndex=0 then
//tj:=' where 花号 like ''%'+edit1.Text+'%'' or 姓名 like ''%'+edit1.Text+'%'' or 客户 like ''%'+edit1.Text+'%'' or 等级 like ''%'+edit1.Text+'%'' or 完成日期 like ''#'+edit1.Text+'#'''
//else
//tj:=' where '+zd+' like ''%'+edit1.Text+'%''';//sql:='select * from 描稿记录 '+tj+ ' order by id desc';adoquery1.SQL.Clear;
adoquery1.SQL.add('select * from 描稿记录');
adoquery1.Open;
end;上面程序没//之前一直出现错误,直到只留下下面三行语句,还出现以下错误:
Cannot perform this operation on a closed dataset不知道哪里出错不好意思没分给了:(

解决方案 »

  1.   

    dataset 看看有没有把active:=true
      

  2.   

    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.add('select * from 描稿记录');
    adoquery1.Open;
      

  3.   

    也是不行,出现Cannot perform this operation on a closed dataset
      

  4.   

    adoquery1关联的datasource的dataset的active属性应该为true
      

  5.   

    是为true
    只要在一个editChange()事件中加了这句
    adoquery1.edit;
    adoquery1.fieldsbyname('xxx').value='xxx';去掉就可以了,这里有影响吧?可是这一句又是非要不可,该怎么办呢
      

  6.   

    那肯定是你的数据库连接不成功,由于连接不成功,所以adoquery1处于closed状态,而你非要使用状态为closed的adoquery1进行查询,当然会抛出“Cannot perform this operation on a closed dataset”的异常了。建议你使用:
      
     var 
       AdoConnection conn;
       try      conn:=Adoconnection.create(nil);
          conn.connectiongString:='Provider=SQLOLEDB.1;Password=silk;Persist Security Info=True;User ID=sa;Initial Catalog=silkmg;Data Source=192.168.102.100';
          
          conn.open;
          showMessage('connect successful!');
       except
          showMessage('connect failure!');
       end;试一下数据库连接是否成功。