| 网站首页 | 资讯 | 影音 | 图片 | 论坛 | 模拟驾考 | 免费取名算命 | 瓷都工具 | 留言本 | 域名 | 瓷都商城 | 汇款 | 
您现在的位置: 瓷都热线|诚信中国:“一就是一”(1941.CN) >> 资讯 >> 教程技巧0 >> 网络编程 >> 正文 登录 注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
如何制作无状态的ASP组件
GB与BIG5内码转换COM原代
一个用组件动态创建Exce
利用OWC服务器端组件动态
利用WinWebMail组件在AS
用webeasymail组件发送邮
Asp组件高级入门与精通系
Asp组件中级入门与精通系
Asp组件初级入门与精通
使用组件封装数据库操作
[图文]Asp组件中级入门与精通系列         ★★★
Asp组件中级入门与精通系列
作者:龙卷风.NET 文章来源:csdn.net 更新时间:2006-4-22 23:09:04
【声明:转载此信息在于传递更多信息,其内容表达的观点并不代表本站立场,由这些信息所产生的一切后果本站不负任何责任。如果您对本信息有什么意见,欢迎和本站联系,谢谢!】http://CiDu.Net

 

今天我们来看一下一个完整的数据封装的、带分页的例子

 

打开vb6,新建Activex Dll工程。工程名修改为fCom,类名修改为fZ8
引用“Microsoft Active Server Pages Object””Microsoft Activex Data Object 2.7 Library”对象库。

 

创建两个组件事件:OnStartPage以及OnEndPage
在事件OnStartPage中创建类ScriptingContent的一个引用。
实例化类ScriptingContent

 

代码如下:

Option Explicit

 

 

'**************************************************

'作者:龙卷风

'功能:简单的可以定制的,完全封装的组件

'时间:2005-01-01

'**************************************************

 

'对象的声明

Dim MyResponse As Response

Dim MyRequest As Request

Dim myApplication As Application

Dim myServer As Server

Dim mySession As Session

 

'私有变量

Private mPageSize As Long

Private mstrSql As String

 

    '当组件被创建的时候会触发这个事件

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

 

显示Table

Public Function ShowTable()

   

    Dim conn As New ADODB.Connection

    Dim rs As New ADODB.Recordset

   

    Dim i As Integer

    Dim j As Integer

    Dim intPage As Integer

    Dim intPageCount As Integer

    Dim strScriptName As String

    Dim intPos As Integer

    Dim intFieldCount As Integer

   

    '得到路径

    strScriptName = MyRequest.ServerVariables("Script_Name")

    intPos = InStrRev(strScriptName, "/")

    If intPos <> 0 Then

        strScriptName = Mid(strScriptName, intPos + 1)

    End If

   

    If IsEmpty(MyRequest("page")) Then

        intPage = 1

    Else

        intPage = CInt(MyRequest("page"))

    End If

      

    On Error GoTo err

   

    conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=localhost"

       

    rs.Open mstrSql, conn, adOpenStatic, adLockReadOnly

   

    '得到记录数

    intFieldCount = rs.Fields.Count

   

    '输出表格

    MyResponse.Write "<table border=1 cellspacing=0 cellpadding=2>"

   

    If Not rs.EOF Then

        rs.PageSize = mPageSize

        rs.AbsolutePage = intPage

       

        '得到页数

        intPageCount = rs.PageCount

       

        '处理分页

        If intPage < 1 Then intPage = 1

        If intPage > intPageCount Then intPage = intPageCount

       

       

        '输出表头

        MyResponse.Write "<tr>"

        For i = 0 To intFieldCount - 1

            MyResponse.Write "<th>" & rs(i).Name & "</th>"

        Next

        MyResponse.Write "</tr>"

           

        '输出内容

        For i = 1 To mPageSize

            If rs.EOF Then

                 Exit For

            End If

            MyResponse.Write "<tr>"

                For j = 0 To intFieldCount - 1

                    MyResponse.Write "<td>" & rs.Fields(j).Value & "</td>"

                Next

            MyResponse.Write "</tr>"

            rs.MoveNext

        Next

       

        '输出分页

        MyResponse.Write "<tr>"

        If intPage <> 1 Then

        MyResponse.Write "<a href=" & strScriptName & "?page=1>[第一页]</a>"

        MyResponse.Write "<a href=" & strScriptName & "?page=" & intPage - 1 & " >[上一页]</a>"

        End If

       

        If intPage <> intPageCount Then

        MyResponse.Write "<a href=" & strScriptName & "?page=" & intPage + 1 & ">[下一页]</a>"

        MyResponse.Write "<a href=" & strScriptName & "?page=" & intPageCount & ">[最后一页]</a>"

        End If

       

        MyResponse.Write "页次:<FONT COLOR='Red'>" & intPage & "/ " & intPageCount & "</FONT>"

        MyResponse.Write "</tr>"

       

    End If

   

    MyResponse.Write "</table>"

       

       

    '释放资源

    If Not rs Is Nothing Then

        If rs.State = 1 Then

            rs.Close

        End If

        Set rs = Nothing

    End If

   

    If Not conn Is Nothing Then

        If conn.State = 1 Then

            conn.Close

        End If

        Set conn = Nothing

    End If

 

    Exit Function

 

err:

    MyResponse.Write err.Number & err.Description

    If Not rs Is Nothing Then

        If rs.State = 1 Then

            rs.Close

        End If

        Set rs = Nothing

    End If

   

    If Not conn Is Nothing Then

        If conn.State = 1 Then

            conn.Close

        End If

        Set conn = Nothing

    End If

End Function

 

定义属性

Public Property Get ShowPageSize() As Variant

ShowPageSize = mPageSize

End Property

 

Public Property Let ShowPageSize(ByVal vNewValue As Variant)

mPageSize = vNewValue

End Property

 

Public Property Get strSQL() As Variant

strSQL = mstrSql

End Property

 

Public Property Let strSQL(ByVal vNewValue As Variant)

mstrSql = vNewValue

End Property

 

编译成Dll文件,系统自动会注册。

否则就手工注册 Regsvr32 f:\test\fcom.dll

 

测试

打开visual interdev6.0,生成一个fz8.asp文件

<%@ Language=VBScript %>

<HTML>

<BODY>

<%

dim obj

set obj=server.CreateObject("fcom.fz8")

每页显示的记录数

obj.ShowPageSize=10

显示的sql语句

obj.strSQL="select customerid,companyname,contactname,contacttitle,address from customers"

obj.ShowTable()

%>

</BODY>

</HTML>

 

配置好虚拟目录,在ie中执行fc8.asp文件,可以看到


 

 

上一页  [1] [2] [3] [4] [5] 


声明:以上信息资料大都是网上搜集而来,版权归作者,如有版权问题请留言告知我将马上改正。
文中所提到的各种观点只是原文观点,各种说法未经一一确认。并不代表本站认可此观点!!
资讯录入:admin    责任编辑:admin 
  • 上一篇资讯:

  • 下一篇资讯:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    点击数:
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)