问题一:
 Adodc1.RecordSource = sql
 Adodc1.Recordset.Requery  此处出错 错误提示是:对象变量或WITH块变量未设置   换成 Adodc1.Refresh 可正常运行为什么?问题二:adodc和recordset的区别是什么?  

解决方案 »

  1.   

    问题一:
    Adodc1.Recordset 还没有打开(建立),后面的操作当然出错。
    问题二:
    adodc管数据库连接,recordset管数据库中的表、查询。
      

  2.   

    1)Refresh 是根据 sql 新做查询,这时会创建 RecordSet 对象。
    而你没经过 Refresh,RecordSet 属性还是 Nothing,当然不能调用 Requery 了。2)RecordSet 好比麦当劳,ADODC 好比麦乐送。
    后者做前者的代理,提供一定的方便的同时,也会有些限制。
      

  3.   

    纯If 这楼给分 Then
        楼主木有小JJ
    End If
      

  4.   

    Adodc1.Refresh用于打开数据库
    Adodc1.Recordset.Requery原数据源重新查询,也就只有用Refresh打开的,才可以用这个方法。
    --------------------------------------Requery 方法
          通过重新执行对象所基于的查询,更新 Recordset 对象中的数据。语法recordset.Requery Options参数Options   可选。指示影响该操作选项的位屏蔽。如果该参数设置为 adAsyncExecute,则该操作将异步执行并在它结束时产生 RecordsetChangeComplete 事件。说明通过重新发出原始命令并再次检索数据,可使用 Requery 方法刷新来自数据源的 Recordset 对象的全部内容。调用该方法等于相继调用 Close 和 Open 方法。如果正在编辑当前记录或者添加新记录将产生错误。在 Recordset 对象打开期间,定义游标性质(CursorType、LockType、MaxRecords 等)的属性为只读,因此 Requery 方法只能刷新当前游标。要更改某个游标属性并查看结果,必须使用 Close 方法使属性再次成为读/写。然后可以更改属性设置并且调用 Open 方法重新打开游标。
      

  5.   

    ADO Data 控件
    Microsoft ActiveX 数据对象(ADO) 来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合 OLEDB 规范的数据源。使用 Visual Basic 的类模块也可以很方便地创建子集的数据提供者。Recordset 属性(ADO Data 控件)
    返回或设置对下一级 ADO Recordset 对象的引用。
      

  6.   

    adodc1的refresh  和 recordset的requery有什么区别
      

  7.   

    Adodc1.Refresh用于打开数据库并对数据源里的SQL语句进行查询。
    Adodc1.Recordset.Requery原数据源SQL语句重新查询,也就只有用Refresh打开的,才可以用这个方法。
      

  8.   


    请问这个Refresh和Recordset.Requery中用到的SQL语句是相同的吗?还是有区别。
      

  9.   


    相同
    应该说Recordset.Requery中用到的SQL语句是用Refresh打开数据源时用到的sql语句,即用原SQL语句重新查询。