本人用VB写了一段程序,
首先引用了两个DLL:
COM+ Services Type Library(COMSVCS.DLL) 和
Microsoft Acitve Server Pages Object Library(ASP.DLL)再写了一个类模块 AspDll.Cls ,代码如下:
'********************************************************************
Option Explicit'Private Declearations
Private objContext As ObjectContext
Private Application As asptypelibrary.Application
Private Server As asptypelibrary.Server
Private Session As asptypelibrary.Session
Private Response As asptypelibrary.Response
Private Request As asptypelibrary.Request'Class Constructor
Private Sub Class_Initialize()
On Error Resume Next
Set objContext = GetObjectContext
'注意以下几行
Set Application = objContext.Item("Application")
Set Server = objContext.Item("Server")
Set Session = objContext.Item("Session")
Set Request = objContext.Item("Request")
Set Response = objContext.Item("Response")If Err Then
    MsgBox Err.Description
    Err.Clear
End If
End Sub'Class Destructor
Private Sub Class_Terminate()
Set Application = Nothing
Set Server = Nothing
Set Session = Nothing
Set Request = Nothing
Set Response = Nothing
et objContext = Nothing
End Sub
'***************************************************************************当我在调用这个类的时候出现了错误:“对象变量或With块变量未设置”
但如果把上面注意的部分注释了起来,错误就不存在了。
请问我错在哪里,这段程序应该怎么写?

解决方案 »

  1.   

    Set objContext = GetObjectContext有问题,必须用NEW为OBJCONTEXT分配一个类实例才能使用它的属性和方法。
    Set objContext = NEW GetObjectContext
      

  2.   

    还是报错,我试过了更详细的实例语句,如下:
    ------------------------------------------------
    Set objContext = New GetObjectContext
    报错为:用户定义类型未定义
    ------------------------------------------------
    Set objContext = New COMSVCSLib.IMTxAS.GetObjectContext
    报错为:类型不匹配
    ------------------------------------------------我把以下几句引了起来:
    'Set Application = objContext.Item("Application")
    'Set Server = objContext.Item("Server")
    'Set Session = objContext.Item("Session")
    'Set Request = objContext.Item("Request")
    'Set Response = objContext.Item("Response")
    并且保持这句:
    Set objContext = GetObjectContext
    这样程序可以正确运行,没有报错。很明显,错误出在引起了的几行里面。
    但怎么改才能正确运行呢?
      

  3.   

    http://blog.csdn.net/online/archive/2005/02/07/283611.aspx注册到组件管理器中试试
      

  4.   

    Set objContext = GetObjectContext没错
    应该是Set Server = objContext("Server")其他的一样
    另外,我觉得如果没有事务处理的需要,使用COM/ASP就够了,不需要使用COM+
    而且即使是使用COM+也通常不会引用Acitve Server Pages Object Library
    确实需要事务处理又要使用组件封装ASP的话可以同时使用COM和COM+,把业务逻辑写在COM+里.
    把ASP封装在COM里
      

  5.   

    在各位帮助下,问题解决了,万分感谢!
    BY THE WAY,我结了帖,但怎么得分那里还是0?