用ADO分页啊    Dim oRs As New ADODB.Recordset
    Dim szConn As String
    Dim nPage As Integer
    Dim nMaxPage As Integer
    
    Dim nPageRecordCount As Integer
    
    nPageRecordCount = 10    '每页记录数
    
    nPage = 1             '当前页
    
    szConn = "driver={sql server};server=nbtop;uid=aaa;pwd=;database=ywsncore"
    
    oRs.PageSize = nPageRecordCount    oRs.Open "select * from sysobjects where xtype='u'", szConn, 3, 3
    
    oRs.AbsolutePage = nPage    Dim i as Integer
    For i = 0 To nPageRecordCount
        
        If Not oRs.EOF Then
             '这里处理数据 
        end if
    
    Next i    oRs.close
    set ors=nothing
如果可以,最好用存储过程写分页

解决方案 »

  1.   

    例子如下:存储过程
    CREATE PROCEDURE usp_PagedAuthors
    @iPage int,
    @iPageSize int
    AS
    BEGINSET NOCOUNT ONDECLARE @iStart int
    DECLARE @iEnd int
    DECLARE @iPageCount int/*建立临时表*/CREATE TABLE #PagedAuthors        (
    --这个自增字段十分关键,就是靠他来完成分页标示。
    ID int IDENTITY,      
    au_id varchar(11) NOT NULL ,
    au_lname varchar(40) NOT NULL ,
    au_fname varchar(20) NOT NULL ,
    phone char(12) NOT NULL ,
    address varchar(40) NULL ,
    city varchar(20) NULL ,
    state char(2) NULL ,
    zip char(5) NULL ,
    contract bit NOT NULL 
    )    
    /*先转存到上面的这个纪录集*/
    INSERT INTO #PagedAuthors (au_id, au_lname, au_fname, 
    phone, address, city, state, zip, contract)
    SELECT au_id, au_lname, au_fname, 
    phone, address, city, state, zip, contract
    FROM authorsSELECT @iPageCount = COUNT(*) FROM authorsSELECT @iPageCount = CEILING(@iPageCount/@iPageSize) + 1IF @iPage < 1
    SELECT @iPage = 1IF @iPage > @iPageCount
    SELECT @iPage = @iPageCountSELECT @iStart = (@iPage - 1) * @iPageSize
    SELECT @iEnd = @iStart + @iPageSize + 1/*这条sql语句就是选取固定的纪录集*/SELECT au_id, au_lname, au_fname, phone, address, city, state, zip, contract
    FROM #PagedAuthors
    WHERE ID > @iStart
    AND ID < @iEnd
    DROP TABLE #PagedAuthorsSET NOCOUNT OFFRETURN @iPageCount
    ENDVB里
        
      dim cmdAuthors as new ADODB.Command
      dim rsAuthors as new ADODB.Recordset  With cmdAuthors
        .ActiveConnection = strConn
        .CommandText = "usp_PagedAuthors"
        .CommandType = adCmdStoredProc    .Parameters.Append .CreateParameter("RETURN_VALUE", adInteger, _
                                  adParamReturnValue)
        .Parameters.Append .CreateParameter("@iPage", adInteger, _
                                  adParamINput, 8, iPage)
        .Parameters.Append .CreateParameter("@iPageSize", adInteger, _
                                  adParamINput, 8, 10)    Set rsData = .Execute
      End With
         do while not rsData.eof         '处理数据
             rsData.movenext
         loop
     
    或者set datagrid1.datasource=rsData也可以