Originariamente inviato da qnello
Ciao a tutti
mi trovo nella situazione di dover paginare una Table con i dati che provengono da un db
Non so da quale parte iniziare, sapete di esempi da poter vedere e imparare?
Grazie
un esempio datato
codice:
'-------------------------------------------------------------------------------------
'Restituisce un oggetto DataTable o lancia eccezione in caso di errore
'Pagina inizia da 1
'NumeroPagine = CInt(Math.Ceiling(NumeroRecord / RighePerPagina))
'-------------------------------------------------------------------------------------
Public Function GetDataTable(ByVal stringaConnessione$, ByVal stringaSQL$, ByVal Pagina%, ByVal RighePagina%) As DataTable
Try
'creo un nuovo DataAdapter
Dim DataAdapter As New OleDbDataAdapter(stringaSQL, stringaConnessione)
'creo un DataSet e lo riempio con i dati
Dim DataSet As New DataSet
DataAdapter.FillSchema(DataSet, SchemaType.Source)
DataAdapter.Fill(DataSet, (Pagina - 1) * RighePagina, RighePagina, "sql")
Return DataSet.Tables("sql")
Catch Errore As Exception
Throw
End Try
End Function
Ti faccio notare che questo è un meccanismo mediocre, da usarsi con resultset di piccole dimensioni. E questo perchè il signor DataAdapter legge tutti i record prima di quelli a cui si è effettivamente interessati, e quindi li scarta.
Implementare un buon meccanismo di paginazione non è affatto banale: è necessario rimboccarsi le maniche e cominciare a scrivere codice SQL più intelligente. Come fare però dipende dal Database. In Oracle sarà in un modo e in Access sarà un altro.
Comunque, la procedura che ho proposto, la ho usata sempre senza particolari problemi