ciao,
ho notato che questa paginazione mi si mangia un record. perciò se nella tabella c'è un solo record non lo visualizzo perchè?

codice:
Protected WithEvents queryres As System.Web.UI.WebControls.Repeater
    Protected WithEvents results As System.Web.UI.WebControls.Label
    Protected WithEvents paginazione As System.Web.UI.WebControls.PlaceHolder
    Protected WithEvents form1 As System.Web.UI.HtmlControls.HtmlForm

Dim PageSize As Integer = 10
Dim CurrentPage As String
Dim TotalPages, TotalSize As Integer

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
        ' pagina corrente
        CurrentPage = Request("p")
        If CurrentPage Is Nothing Then CurrentPage = 1
        If Not Page.IsPostBack Then
            BindData()
        End If
    End Sub

Sub BindData()

        ' stringa di connessione
        Dim strconn As String = "provider=Microsoft.Jet.OLEDB.4.0; data source=" & Server.MapPath("mdb-database/db.mdb")

        ' query
        Dim strSQL As String = "SELECT * FROM tb"


        ' SqlConnection e SqlDataAdapter
        Dim conn As OleDbConnection = New OleDbConnection(strconn)
        Dim query As OleDbDataAdapter = New OleDbDataAdapter(strSQL, conn)

        ' creo il dataset 
        Dim querydataset As DataSet = New DataSet
        Dim startRecord As Integer = (Int32.Parse(CurrentPage) - 1) * Int32.Parse(PageSize)

        ' databinding
        query.Fill(querydataset, startRecord, Int32.Parse(PageSize), "ext_content")
        queryres.DataSource = querydataset
        queryres.DataBind()

        ' conta i record totali
        Dim strSQLCount As String

        ' ricavo la query count
        strSQLCount = "SELECT COUNT(*) as Totale FROM tb"

        conn.Open()
        Dim myCommand As OleDbCommand = New OleDbCommand(strSQLCount, conn)
        Dim reader As OleDbDataReader = myCommand.ExecuteReader()

        ' conto i risultati
        reader.Read()
        TotalSize = reader("totale")

        reader.Close()
        conn.Close()

        ' mostra avviso in alto con il numero dei risultati
        If TotalSize = 0 Then
            results.Text = "Non ci sono risultati per questa ricerca"
        Else
            TotalPages = Int32.Parse(TotalSize) \ Int32.Parse(PageSize) + 1

            ' fix per numero di pagine
            If Fix(TotalSize / PageSize) = TotalSize / PageSize Then TotalPages = TotalPages - 1

            If TotalSize = 1 Then
                results.Text = "Un risultato"
            Else
               results.Text = TotalSize & " risultati"
            End If

            ' fix per record finale
            Dim EndRecords As Integer = startRecord + Int32.Parse(PageSize)
            If EndRecords > TotalSize Then EndRecords = TotalSize

            results.Text = results.Text & " - Pagina " & CurrentPage & " su " & TotalPages & " in totale - da " & startRecord + 1 & " a " & EndRecords
        End If

        If TotalSize = 0 Then
            paginazione.Visible = False
        End If

        ' costruisci la paginazione
        BuildPagers()
    End Sub

    Sub BuildPagers()

        ' ciclo
        Dim i As Integer
        Dim lb As Label

        If TotalPages > 1 Then
            lb = New Label
            lb.Text = "Pagina: "
            paginazione.Controls.Add(lb)

            For i = 1 To (TotalPages)
                lb = New Label
                lb.ID = "Pagina" & i
                If CurrentPage = i Then
                    lb.Text = "[" & i & "] " & vbCrLf
                Else
                    lb.Text = "[" & i & "] " & vbCrLf
                End If
                Paginazione.Controls.Add(lb)
            Next
        End If
    End Sub

lo potete provare e farmi sapere?