La base de données principale est Access. Après l'avoir utilisée pendant un an, le client a déclaré que l'ouverture de l'interface était très lente. Après avoir vérifié la base de données, j'ai constaté qu'il y avait plus de 50 000 enregistrements dans la table de données. J'ai essayé de copier les enregistrements sur 10. Des milliers d'enregistrements, l'ouverture de l'interface est très lente et tourner les pages a le même problème. La méthode que j'ai adoptée est de charger 20 enregistrements par page, de les écrire en boucle et de les afficher dans le tableau, puis de définir quatre touches de rotation de page. pour afficher les données, mais le problème est que même s'il n'y a que vingt enregistrements chargés dans la page à chaque fois, tous les enregistrements doivent être chargés en même temps à chaque fois que le jeu d'enregistrements est ouvert, c'est donc lent.
Première solution :
1.Définissez un champ à incrémentation automatique et le champ est INDEX.
2. Puisqu'il s'agit d'ACCESS, il ne peut être utilisé que pour la pagination frontale. Le but du champ à croissance automatique est de réaliser la fonction de pagination.
1> Enregistrez la dernière valeur auto-incrémentée de la page précédente de l'utilisateur, telle que M.
2> Page suivante, prenez la valeur de début de la page.M+1, la valeur de fin : M+1+1,5*PAGESIZE (Remarque : étant donné que la base de données aura des opérations d'ajout et de suppression, il devrait y avoir un coefficient pour la taille de la page . Vous pouvez personnaliser un coefficient élevé de 1 en fonction de la situation.
3> La boucle frontale prend la première barre PAGESIZE de RS, l'écrit dans un nouveau RS et revient.
Remarque : le nouveau RS est un RS sans connexion.
Deuxième solution :
Cent mille enregistrements ne constituent pas la limite de la base de données Access. De plus, votre méthode n'effectue pas de pagination au sens propre du terme (les propriétés PageSize et AbsolutePage doivent être utilisées).
Code VBScript
Copiez le code comme suit :
Définir rs = Nouveau ADODB.Recordset
rs.CursorLocation = adUseClient
rs.PageSize = 20
rs.Open Select * Depuis invité, iConc, adOpenKeyset, adLockOptimisticlng
Pages = rs.PageCount
lngPageActuelle = 1
Le jeu d'enregistrements ouvert à ce moment ne contient que 20 enregistrements.
En tournant les pages :
Copiez le code comme suit :
Si lngCurrentPage < lngPages Alors
lngCurrentPage = lngCurrentPage + 1
rs.AbsolutePage = lngCurrentPage
Fin si