已经引用了microsoft active server pages object library
并且可以在vb中使用asp内置对象,源程序如下:Option ExplicitDim mySession As Session
Dim myResponse As Response
Dim test As StringPublic Sub OnStartPage(myScriptingContent As ScriptingContext)
    Set mySession = myScriptingContent.Session
    Set myResponse = myScriptingContent.Response
End Sub
Private Sub Command1_Click()
    mySession(test) = "这是测试程序"
    myResponse.Write "这是测试程序"
   
End Sub
但是运行的时候,仍然报
Object variable or with block variable not set 
错误,这是为什么呢?

解决方案 »

  1.   

    Asp组件中级入门与精通系列之三
    Session相比较就简单多了

    打开vb6,新建Activex Dll工程。工程名修改为fCom,类名修改为fZ3 
    引用“Microsoft Active Server Pages Object”对象库。 
    创建两个组件事件:OnStartPage以及OnEndPage 
    在事件OnStartPage中创建类ScriptingContent的一个引用。 
    实例化类ScriptingContent。代码如下:
    Option Explicit'对象的声明
    Dim myResponse As Response
    Dim myRequest As Request
    Dim myApplication As Application
    Dim myServer As Server
    Dim mySession As Session    '当组件被创建的时候会触发这个事件
    Public Sub OnStartPage(myScriptingContent As ScriptingContext)
         '进行对象的实例化
         Set myResponse = myScriptingContent.Response
         Set myRequest = myScriptingContent.Request
         Set myServer = myScriptingContent.Server
         Set myApplication = myScriptingContent.Application
         Set mySession = myScriptingContent.Session
    End Sub    '当组件被销毁的时候触发这个事件
    Public Sub OnEndPage()
         '销毁对象
         Set myResponse = Nothing
         Set myRequest = Nothing
         Set myServer = Nothing
         Set myApplication = Nothing
         Set mySession = Nothing
    End Sub‘可以看到,把以前asp中写的搬到了vb中,写法是一样的
    ‘得到所有的session的变量和值
    Public Sub ShowSession()
    '可以设置超时20分钟
        mySession.Timeout = 20
        Dim myitem
        '得到所有的session
        For Each myitem In mySession.Contents
            myResponse.Write myitem & ": " & mySession.Contents(myitem)
            myResponse.Write "<br>"
        Next
    End Sub测试
    打开visual interdev6.0,生成一个asp文件
    <%@ Language=VBScript %>
    <HTML>
    <BODY>
    <%
    dim obj
    set obj=server.CreateObject("fcom.fz3") 
    session("name")="龙卷风"
    session("age")=26
    session("特长")="组件"
    obj.ShowSession() 
    %></BODY>
    </HTML>
    配置好虚拟目录,在ie中执行此asp文件,可以看到
    name: 龙卷风
    age: 26
    特长: 组件
     
    Session的用法就讲到这里。Session其他的用法类似。
      

  2.   

    楼上的有没搞错啊,楼主问问的是"如何定义Session变量并付值",不是读取啊:(
      

  3.   

    kao,楼主你这么写也太搞了吧,ASP库用来创建用于ASP页面的组件,而不是给你用来创建普通程序的,你应该新建ActiveX DLL,然后加入ASP类型库,单纯的EXE工程根本没用。
    OnStartPage由ASP的加载服务代码ASP.DLL来调用。