Avec le développement de la technologie réseau et la popularité d'Internet, le navigateur/serveur est devenu le courant dominant dans le développement de logiciels. Lors du développement d'un système ERP, l'auteur a adopté le modèle logiciel B/S. L'architecture spécifique est SQL Server + IIS + IE. . La page Web utilise le fichier Active Server Page. Étant donné que le système implique une grande quantité d'opérations et de requêtes de données, s'il est uniquement écrit en langage de script asp, cela entraînera inévitablement une faible efficacité. Afin d'améliorer l'efficacité et la sécurité globales du système, l'auteur utilise des composants ASP pour. remplacer le langage de script ASP.
En raison des fonctions puissantes de Delphi et de son efficacité extrêmement élevée dans le développement de systèmes d'applications de bases de données, l'auteur utilise le plus souvent Delphi 5.0 pour développer des composants ASP (bien sûr, Visual Basic ou VC++ peuvent également être utilisés pour développer des composants ASP, Delphi lui-même est largement utilisé). Internet et InternetExPRess Les deux panneaux de composants fournissent de nombreux composants capables de générer directement des pages Web, mais ces composants ne disposent pas de la fonction de pagination commune pour l'affichage des données dans les pages Web. Comme nous le savons tous, ASP établit un objet RecordSet en établissant une connexion ADO à la base de données, puis utilise AbsolutePage du RecordSet pour le positionnement des pages. Dans Delphi 5.0, le composant ADO a été fourni pour encapsuler la bibliothèque ADO de Microsoft. a la fonction de positionnement de page. Ensuite, l'auteur développera un composant ASP général qui affiche les pages Web de pagination étape par étape.
La première étape : créez une nouvelle bibliothèque Activex, nommée PadoPage, puis créez une nouvelle classe d'objets Active Server, nommée AdoPage, c'est-à-dire qu'un composant ASP nommé AdoPage est créé et le fichier est nommé Adopage.pas.
Étape 2 : ouvrez la bibliothèque de types, créez une nouvelle méthode Get_Page, puis ajoutez un paramètre Pconnandsgl à Get_Page pour transmettre l'instruction de connexion à la base de données et l'instruction SQL. La sélection du paramètre est de type BSTR.
Étape 3 : Créez un nouveau DataModule, insérez le composant Adoconnection et le composant AdoQuery, et nommez le module de données AdoDataModule. Étant donné que la méthode Get_Page dans le composant nouvellement créé doit obtenir des données de DataModule, vous devez ajouter AdoDataModule à la clause Uses d'Adopage.pas, puis déclarer une variable fadodm du module de données et ajouter les deux méthodes Initialize et Destroy à la fin. en même temps, afin que Générer des modules de données dans le groupe ASP fonctionne. Le code spécifique d’Adopage.pas est le suivant :
unité Adopage;
interface
utilise
ComObj, SysUtils, Classes, ActiveX, AspTlb, Pbasedata_TLB, StdVcl, AdoDataModule ;
//Ajouter AdoDataModule à la clause USE
taper
T Adopage = classe (TASPObject, Ibasedata)
privé
fadodm:TAdoDataModuleform;
protégé
procédure OnEndPage ; appel sécurisé ;
procédure OnStartPage (const AScriptingContext : IUnknown);
procédure get_page(const pconnandsql : WideString);
publique
procédure initialiser; remplacer;
destructeur détruire; remplacer;
fin;
mise en œuvre
utilise les formulaires ComServ ;
destructeur Tadopage.destroy;
commencer
hérité;
fadodm.Destroy;
fin;
procédure Tadopage.initialize;
commencer
hérité;
fadodm:=tadodmform.Create(forms.application);
fin;
Étape 4 : Établissez une méthode de pagination générale pour afficher les données, get_page. Le code spécifique est le suivant :
procédure Tadopage.get_page(const pconnandsql: WideString);
var je,j,n:entier;
connstr,sqlstr:chaîne large;
rs:_recordset;
cur_url:chaîne large;
numéro_page : entier ;
commencer
//Tout d'abord, supprimez la chaîne de connexion et l'instruction SQL des paramètres transmis.
pconnandsql:=majuscules(pconnandsql);
je:=pos('CONNSTR',pcnnandsql);
j:=pos('SQLSTR',pcnnandsql);
si je=0 ou j=0 alors
commencer
réponse.write('Erreur de chaîne de connexion à la base de données ou d'instruction SQL !');
avorter;
fin;
pour n:=I+8 à j-1 faire
connstr:=connstr+pcnnandsql[n];
pour n:=j+7 à la longueur (pcnnandsql) faites
sqlstr:=sqlstr+pcnnandsql[n];
// Attribuez respectivement la chaîne de connexion et l'instruction SQL obtenues à ADOconnection et ADOQuery
fadodm.adoconnection1.connstring:=connstr;
fadodm.adoquery1.sql.add(sqlstr);
//Ce qui suit est le processus d'ouverture de la base de données et d'exécution de la pagination
essayer
fadodm.adoquery1.open;
//Ouvre la base de données
rs:=fadodm.adoquery1.recordset;
//Obtenir l'URL et le numéro de page de la page actuellement ouverte
essayer
si request.servervariable['url'].count>0 alors
cur_url:= request.servervariable.item['url'];
si request.querystring['page_no'].count>0 alors
page_no:=request.querystring.item['page_no']
autre
numéro_page :=1 ;
sauf
fin;
rs.pagesize:=20;
//Définissez 20 lignes par page
rs.AbsolutePage:=page_no;
//Positionnement des pages
réponse.write('total'+inttostr(rs.pagecount)+'page& ');
réponse.write('th'+inttostr(page_no)+'page& ');
//Créer un lien hypertexte pour chaque numéro de page
pour i:=1 à rs.pagecount faire
réponse.write('<a href='+cur_url+'?page_no='+inttostr(i)+'>'
+inttostr(i)+'</a>');
//Les enregistrements de données sont affichés dans des tableaux
réponse.write('<table>');
//Récupère le titre du tableau
réponse.write('<tr>');
pour I:=0 à fadodm.adoquery1.fields.count-1 faire
réponse.write('<td>'+fadodm.adoquery1.fields[i].fieldname+'</td>');
réponse.write('</tr>');
j:=1
avec fadodm.adoquery1 faire
while (pas eof) et j<=rs.pagesize do
commencer
réponse.write('<tr>');
//Obtenir le contenu du tableau
pour i:=1 à field.count faire
réponse.write('<td>'+fields[i].asstring+'</td>');
réponse.write('</tr>');
suivant;
fin;
réponse.write('</table>');
fadodm.adoquery1.close;
sauf
réponse.write('Erreur de données !');
fin;
fin;
Ce qui précède est le processus d'obtention de données de pagination universelles. Il convient de noter que certaines fonctions provoqueront des erreurs lors de la compilation. Ajoutez simplement des sysutils, des classes et des unités adodb à la clause USES.
Étape 5 : Compilez et enregistrez le composant adopage, qui peut être appelé dans le code ASP. L'exemple d'appel est le suivant :
<%
page Web obj sombre
définir webpageobj=server.createobject(padopage.adopage)
webpageobj.get_page(conn=provider=SQLOLEDB.1;presist security info=false;
identifiant utilisateur=sa;catalogue initial=sale_data;source de données=(local),
sqlstr=sélectionnerdu client)
%>
Grâce aux étapes ci-dessus, nous avons développé avec succès un composant ASP avec fonction de pagination à l'aide de Delphi.