我在网友提供的代码做了一个分页显示的程序,可就是出不来,请高手指教。有三个按钮:显示(Cmd_View),上页(Cmd_uppage),下页(Cmd_downpage),每页显示23条记录,表格为VsFlexGrid。
Private Sub Form_Load()
   page = 1
End Sub
**************************************************************************输入号码完毕后,点击显示
    Query_str2 = "select * from po_2 where PONUMBER='" & Trim(Txt_OrderNo.Text) & "'order by PARTNUM"
'**********************************************************************
private sub viewGrid    
  rs.CursorLocation = adUseClient
      rs.Open Query_str2, cn
         rs.PageSize = 23
         rs.AbsolutePage = page
         pagenum = rs.PageCount              For i = 1 To rs.PageSize
                  Grid.TextMatrix(i, 1=i                  '第1列
                  Grid.TextMatrix(i, 2) = GB_OKText(rs("PARTNUM"))        '第2列
                  Grid.TextMatrix(i, 3) = GB_OKText(rs("PARTDES2"))       '第3列
                 'Grid.TextMatrix(i, 4) = GB_OKText(rs(""))               '第4列
                  Grid.TextMatrix(i, 5) = GB_OKText(rs("QUANTOP"))        '第5列
                  Grid.TextMatrix(i, 6) = GB_OKText(rs("UNIT"))           '第6列
             '     rs.MoveNext
                If rs.EOF Then Exit For
              Next i      rs.Close
end sub
**************************************************************************
点击上页:
'上一页
rs.Open "select * from po_2 where PONUMBER='" & Trim(Txt_OrderNo.Text) & "'order by PARTNUM", cn
   If page = 1 Then
      page = 1
   '   Cmd_FontPage.Enabled = False
   Else
      page = page - 1
   End If
rs.Close
   Call View_Grid
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7
下一页
rs.Open "select * from po_2 where PONUMBER='" & Trim(Txt_OrderNo.Text) & "'order by PARTNUM", cn
    If page = rs.PageCount Then
       page = 1
  '     Cmd_NextPage.Enabled = False
    Else
       page = page + 1
    End If
 rs.Close
    Call View_Grid

解决方案 »

  1.   

    '============================
    Dim strSql As String
    Dim Page As Integer
    Dim PageMaxCount As Integer
    Dim rs As New ADODB.RecordsetPrivate Sub Form_Load()
        Page = 0
        strSql = "select * from po_2 where PONUMBER='" & Trim(Txt_OrderNo.Text) & "'order by PARTNUM"
        rs.CursorLocation = adUseClient
        rs.Open strSql, cn
        rs.PageSize = 23
        PageMaxCount = rs.PageCount
        rs.Close
        Set rs = Nothing
        strSql = "select Top 23 * from po_2" _
            & " where PARTNUM NOT IN (select Top 23 *" & Page & " " & Page & ",PARTNUM,PARTDES2,'',QUANTOP,UNIT" _
                                    & " from po_2" _
                                    & " where PONUMBER='" & Trim(Txt_OrderNo.Text) _
                                    & " order by PARTNUM)" _
            & " order by PARTNUM"
    End Sub'**********************************************************************
    Private Sub viewGrid()
        rs.CursorLocation = adUseClient
        rs.Open strSql, cn
        Set Grid.DataSource = rs
        rs.Close
    End Sub
    '**************************************************************************
    '上一页
        Page = IIf(Page = 0, 0, Page - 1)
       Call View_Grid
    '**************************************************************************
    '下一页
        Page = IIf(Page = PageMaxCount, PageMaxCount, Page + 1)
        Call View_Grid
      

  2.   

    declare @SQLStr varchar(8000)
    set @SQLStr='SELECT Top '+cast(@每页大小 as varchar)+' * FROM 表 WHERE 主键列 NOT IN (SELECT TOP '+cast(@每页大小*@第几页 as varchar)+' 主键列 from 表 )'
    exec(@SQLStr)
    declare @SQLStr varchar(8000)
    set @SQLStr='SELECT Top '+cast(@每页大小 as varchar)+' * FROM Customers WHERE Customerid NOT IN (SELECT TOP '+cast(@每页大小*@第几页 as varchar)+' Customersid from Customers )'
    exec(@SQLStr)
    比如:分页SQL SERVER 的NorthWind数据库中的Customers表的第10到20条记录SELECT Top 10 * FROM Customers WHERE Customerid NOT IN (SELECT TOP 20 Customerid from Customers )
      

  3.   

    '改一下
    '============================
    Dim strSql As String
    Dim Page As Integer
    Dim PageMaxCount As Integer
    Dim rs As New ADODB.RecordsetPrivate Sub Form_Load()
        strSql = "select 1 from po_2 where PONUMBER='" & Trim(Txt_OrderNo.Text) & "'"
        rs.CursorLocation = adUseClient
        rs.Open strSql, cn
        rs.PageSize = 23
        PageMaxCount = rs.PageCount
        rs.Close
        Page = 0
        strSql = "select Top " & 23 * Page & " " & Page & ",PARTNUM,PARTDES2,'',QUANTOP,UNIT from po_2" _
            & " where PARTNUM NOT IN (select Top " & 23 * Page & "PARTNUM" _
                                    & " from po_2" _
                                    & " where PONUMBER='" & Trim(Txt_OrderNo.Text) _
                                    & " order by PARTNUM)" _
            & " where PONUMBER='" & Trim(Txt_OrderNo.Text) _
            & " order by PARTNUM"
        rs.Open strSql, cn
    End Sub'**********************************************************************
    Private Sub viewGrid()
        rs.CursorLocation = adUseClient
        rs.Open strSql, cn
        Set Grid.DataSource = rs
        rs.Close
    End Sub
    '**************************************************************************
    '上一页
        Page = IIf(Page = 0, 0, Page - 1)
        strSql = "select Top " & 23 * Page & " " & Page & ",PARTNUM,PARTDES2,'',QUANTOP,UNIT from po_2" _
            & " where PARTNUM NOT IN (select Top " & 23 * Page & "PARTNUM" _
                                    & " from po_2" _
                                    & " where PONUMBER='" & Trim(Txt_OrderNo.Text) _
                                    & " order by PARTNUM)" _
            & " where PONUMBER='" & Trim(Txt_OrderNo.Text) _
            & " order by PARTNUM"
       Call view_Grid
    '**************************************************************************
    '下一页
        Page = IIf(Page = PageMaxCount, PageMaxCount, Page + 1)
        strSql = "select Top " & 23 * Page & " " & Page & ",PARTNUM,PARTDES2,'',QUANTOP,UNIT from po_2" _
            & " where PARTNUM NOT IN (select Top " & 23 * Page & "PARTNUM" _
                                    & " from po_2" _
                                    & " where PONUMBER='" & Trim(Txt_OrderNo.Text) _
                                    & " order by PARTNUM)" _
            & " where PONUMBER='" & Trim(Txt_OrderNo.Text) _
            & " order by PARTNUM"
        Call view_Grid