本人用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块变量未设置”
但如果把上面注意的部分注释了起来,错误就不存在了。
请问我错在哪里,这段程序应该怎么写?
首先引用了两个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块变量未设置”
但如果把上面注意的部分注释了起来,错误就不存在了。
请问我错在哪里,这段程序应该怎么写?
Set objContext = NEW GetObjectContext
------------------------------------------------
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
这样程序可以正确运行,没有报错。很明显,错误出在引起了的几行里面。
但怎么改才能正确运行呢?
应该是Set Server = objContext("Server")其他的一样
另外,我觉得如果没有事务处理的需要,使用COM/ASP就够了,不需要使用COM+
而且即使是使用COM+也通常不会引用Acitve Server Pages Object Library
确实需要事务处理又要使用组件封装ASP的话可以同时使用COM和COM+,把业务逻辑写在COM+里.
把ASP封装在COM里
BY THE WAY,我结了帖,但怎么得分那里还是0?