Con el desarrollo de la tecnología de red y la popularidad de Internet, el navegador/servidor se ha convertido en la corriente principal en el desarrollo de software. Al desarrollar un sistema ERP, el autor adoptó el modelo de software B/S. La arquitectura específica es SQL Server + IIS + IE. La página web utiliza un archivo de página Active Server. Dado que el sistema implica una gran cantidad de operaciones y consultas de datos, si está escrito exclusivamente en lenguaje de script ASP, inevitablemente conducirá a una baja eficiencia. Para mejorar la eficiencia y seguridad general del sistema, el autor utiliza componentes ASP para. reemplace el lenguaje de secuencia de comandos ASP.
Debido a las poderosas funciones de Delphi y su eficiencia extremadamente alta en el desarrollo de sistemas de aplicaciones de bases de datos, el autor usa más comúnmente Delphi 5.0 para desarrollar componentes ASP (por supuesto, Visual Basic o VC ++ también se pueden usar para desarrollar componentes ASP y se usa ampliamente en Delphi). Internet e InternetExPRess Los dos paneles de componentes proporcionan numerosos componentes que pueden generar páginas web directamente, pero estos componentes carecen de la función de paginación común para la visualización de datos en páginas web. Como todos sabemos, ASP establece un objeto RecordSet estableciendo una conexión ADO a la base de datos y luego usa AbsolutePage de RecordSet para el posicionamiento de la página. En Delphi 5.0, el componente ADO se proporcionó para encapsular la biblioteca ADO de Microsoft, por lo que también. Tiene la función de posicionamiento de página. A continuación, el autor desarrollará un componente ASP general que muestra páginas web paginadas paso a paso.
El primer paso: crear una nueva biblioteca Activex, denominada PadoPage, y luego crear una nueva clase de objeto Active Server, denominada AdoPage, es decir, se crea un componente ASP denominado AdoPage y el archivo se denomina Adopage.pas.
Paso 2: abra la biblioteca de tipos, cree un nuevo método Get_Page y luego agregue un parámetro Pconnandsgl a Get_Page para pasar la declaración de conexión de la base de datos y la declaración SQL. La selección de parámetros es de tipo BSTR.
Paso 3: Cree un nuevo DataModule, coloque el componente Adoconnection y el componente AdoQuery, y nombre el módulo de datos AdoDataModule. Dado que el método Get_Page en el componente recién creado necesita obtener datos de DataModule, debe agregar AdoDataModule a la cláusula Uses de Adopage.pas, luego declarar una variable fadodm del módulo de datos y agregar los dos métodos Inicializar y Destruir en el Al mismo tiempo, para que funcione Generar módulos de datos en el grupo ASP. El código específico de Adopage.pas es el siguiente:
unidad Adopage;
interfaz
usos
ComObj, SysUtils, Clases, ActiveX, AspTlb, Pbasedata_TLB, StdVcl, AdoDataModule;
//Agregar AdoDataModule a la cláusula USE
tipo
T Adopage = clase(TASPObject, Ibasedata)
privado
fadodm:TAdoDataModuleform;
protegido
procedimiento OnEndPage; llamada segura;
procedimiento OnStartPage (const AScriptingContext: IUnknown llamada segura);
procedimiento get_page(const pconnandsql: WideString);
público
inicialización del procedimiento; anulación;
destructor destruir; anular;
fin;
implementación
utiliza ComServ, formularios;
destructor Tadopage.destroy;
comenzar
heredado;
fadodm.Destruir;
fin;
procedimiento Tadopage.initialize;
comenzar
heredado;
fadodm:=tadodmform.Create(formularios.aplicación);
fin;
Paso 4: establezca un método de paginación general para mostrar datos, get_page. El código específico es el siguiente:
procedimiento Tadopage.get_page(const pconnandsql: WideString);
var i,j,n:entero;
connstr,sqlstr:cadena ancha;
rs:_recordset;
cur_url:cadena ancha;
número_página: entero;
comenzar
// Primero, extraiga la cadena de conexión y la declaración SQL de los parámetros pasados.
pconnandsql:=mayúscula(pconnandsql);
i:=pos('CONNSTR',pcnnandsql);
j:=pos('SQLSTR',pcnnandsql);
si i=0 o j=0 entonces
comenzar
respuesta.write('¡Error en la cadena de conexión de la base de datos o en la declaración SQL!');
abortar;
fin;
para n:=I+8 a j-1 hacer
connstr:=connstr+pcnnandsql[n];
para n:=j+7 a longitud(pcnnandsql) hacer
sqlstr:=sqlstr+pcnnandsql[n];
//Asigne la cadena de conexión obtenida y la declaración SQL a ADOconnection y ADOQuery respectivamente
fadodm.adoconnection1.connstring:=connstr;
fadodm.adoquery1.sql.add(sqlstr);
// El siguiente es el proceso de abrir la base de datos y realizar la paginación.
intentar
fadodm.adoquery1.open;
//Abrir la base de datos
rs:=fadodm.adoquery1.recordset;
//Obtiene la URL y el número de página de la página abierta actualmente
intentar
si request.servervariable['url'].count>0 entonces
cur_url:= request.servervariable.item['url'];
si request.querystring['page_no'].count>0 entonces
número_página:=solicitud.querystring.item['número_página']
demás
número_página:=1;
excepto
fin;
rs.tamaño de página:=20;
//Establece 20 líneas por página
rs.AbsolutePage:=página_no;
//Posicionamiento de la página
respuesta.write('total'+inttostr(rs.pagecount)+'página& ');
respuesta.write('th'+inttostr(page_no)+'page& ');
//Crea un hipervínculo para cada número de página
para i:=1 a rs.pagecount hacer
respuesta.write('<a href='+cur_url+'?page_no='+inttostr(i)+'>'
+inttostr(i)+'</a>');
//Los registros de datos se muestran en tablas
respuesta.write('<tabla>');
//Obtener el título de la tabla
respuesta.write('<tr>');
para I:=0 a fadodm.adoquery1.fields.count-1 hacer
respuesta.write('<td>'+fadodm.adoquery1.fields[i].fieldname+'</td>');
respuesta.write('</tr>');
j:=1
con fadodm.adoquery1 hacer
mientras (no eof) y j<=rs.pagesize lo hacen
comenzar
respuesta.write('<tr>');
//Obtener el contenido de la tabla
para i:=1 a campos.count hacer
respuesta.write('<td>'+fields[i].asstring+'</td>');
respuesta.write('</tr>');
próximo;
fin;
respuesta.write('</table>');
fadodm.adoquery1.close;
excepto
respuesta.write('¡Error de datos!');
fin;
fin;
Lo anterior es el proceso de obtención de datos de paginación universal. Cabe señalar que algunas funciones causarán errores durante la compilación. Simplemente agregue sysutils, clases y unidades adodb a la cláusula USES.
Paso 5: Compile y registre el componente adopage, que se puede llamar en el código ASP. El ejemplo de llamada es el siguiente:
<%
objeto de página web tenue
establecer webpageobj=server.createobject(padopage.adopage)
webpageobj.get_page(conn=provider=SQLOLEDB.1;presist security info=false;
ID de usuario=sa;catálogo inicial=sale_data;fuente de datos=(local),
sqlstr=seleccionardel cliente)
%>
Mediante los pasos anteriores, hemos desarrollado con éxito un componente ASP con función de paginación utilizando Delphi.