1 在主程序外的DLL中的数据类ClassData中有一个返回RecordSet的函数GerRs,在主程序中:Public Cn as New ClassData   '在模块中设置为全局变量,保持Connect为连接状态。Cn.Connect  '打开连接
Dim Rs as Adodb.recordset
set Rs=ClassData.GetRs
Msgbox Rs.Fields(0)
返回错误:对象变量未设置,也就是Rs仍然是Nothing.没有被赋值。把代码改为:
Msgbox ClassData.GetRs.Fields(0)
结果返回正确值。函数是有传回Recordset的,为什么不能赋值。Cn类对象也没有被关闭,类内的Connection应该还保持连接。

解决方案 »

  1.   

    set Rs=ClassData.GetRs.Clone 可以不可以?
      

  2.   

    try:
    Dim Rs as New Adodb.recordset
      

  3.   

    用New的话也不行,会提示是空记录集。不必用New,我只是要创建一个到目标RecordSet的引用,不需要新建一个空的Recordset。
      

  4.   

    //在主程序外的DLL中的数据类ClassData中有一个返回RecordSet的函数GerRs首先,你要确定这个RecordSet是不是ado的RecordSet
      

  5.   

    TO: rainstormmaster(rainstormmaster) 
    老大,你太神了。还真的是这样。我本来的主工程中是引用ADOR,没有引用ADO,后来又改成ADO。
    现在引用框中也只有ADO,而且Rs的定义是这样写的:
    Dim Rs as ADODB.Recordset
    居然还是不行。我改变Rs为Rs1,重新录入代码,又可以了,太搞笑了。这就是
    传说中的见鬼吧:(