Com o desenvolvimento da tecnologia de rede e a popularidade da Internet, o navegador/servidor tornou-se o mainstream no desenvolvimento de software. Ao desenvolver um sistema ERP, o autor adotou o modelo de software B/S. A arquitetura específica é SQL Server + IIS + IE. A página da web usa o arquivo Active Server Page. Como o sistema envolve uma grande quantidade de operações e consultas de dados, se for escrito puramente em linguagem de script asp, inevitavelmente levará a uma baixa eficiência. A fim de melhorar a eficiência geral e a segurança do sistema, o autor usa componentes ASP para. substitua a linguagem de script ASP.
Devido às funções poderosas do Delphi e à eficiência extremamente alta no desenvolvimento de sistemas de aplicativos de banco de dados, o autor geralmente usa o Delphi 5.0 para desenvolver componentes ASP (é claro, Visual Basic ou VC++ também podem ser usados para desenvolver componentes ASP). a Internet e o InternetExPRess Os dois painéis de componentes fornecem vários componentes que podem gerar páginas da Web diretamente, mas esses componentes não possuem a função de paginação comum para exibição de dados em páginas da Web. Como todos sabemos, o ASP estabelece um objeto RecordSet estabelecendo uma conexão ADO com o banco de dados e, em seguida, usa o AbsolutePage do RecordSet para posicionamento da página. No Delphi 5.0, o componente ADO foi fornecido para encapsular a biblioteca ADO da Microsoft, portanto também. tem a função de posicionamento de página. A seguir, o autor desenvolverá um componente ASP geral que exibe a paginação de páginas da Web passo a passo.
A primeira etapa: Crie uma nova biblioteca Activex, chamada PadoPage, e a seguir crie uma nova classe de objeto Active Server, chamada AdoPage, ou seja, um componente ASP chamado AdoPage é criado e o arquivo é chamado Adopage.pas.
Etapa 2: Abra a biblioteca de tipos, crie um novo método Get_Page e adicione um parâmetro Pconnandsgl a Get_Page para passar a instrução de conexão do banco de dados e a instrução SQL.
Etapa 3: Crie um novo DataModule, coloque o componente Adoconnection e o componente AdoQuery e nomeie o Data Module AdoDataModule. Como o método Get_Page no componente recém-criado precisa obter dados do DataModule, você precisa adicionar AdoDataModule à cláusula Uses de Adopage.pas, declarar uma variável fadodm do módulo de dados e adicionar os dois métodos Initialize e Destroy no ao mesmo tempo, para que Gerar módulos de dados no grupo ASP funcione. O código específico do Adopage.pas é o seguinte:
unidade Adopage;
interface
usa
ComObj, SysUtils, Classes, ActiveX, AspTlb, Pbasedata_TLB, StdVcl, AdoDataModule;
//Adiciona AdoDataModule à cláusula USE
tipo
T Adopage = classe(TASPObject, Ibasedata)
privado
fadodm:TAdoDataModuleform;
protegido
procedimento OnEndPage;
procedimento OnStartPage (const AScriptingContext: IUnknown);
procedimento get_page(const pconnandsql: WideString);
público
inicializar procedimento; substituir;
destruidor destruir; substituir;
fim;
implementação
usa ComServ,formulários;
destruidor Tadopage.destroy;
começar
herdado;
fadodm.Destroy;
fim;
procedimento Tadopage.initialize;
começar
herdado;
fadodm:=tadodmform.Create(forms.application);
fim;
Etapa 4: Estabeleça um método de paginação geral para exibir dados, get_page. O código específico é o seguinte:
procedimento Tadopage.get_page(const pconnandsql: WideString);
var i,j,n:inteiro;
connstr,sqlstr:string larga;
rs:_recordset;
cur_url:string larga;
número_da_página:inteiro;
começar
//Primeiro, retire a string de conexão e a instrução SQL dos parâmetros passados.
pconnandsql:=maiúsculas(pconnandsql);
i:=pos('CONNSTR',pcnnandsql);
j:=pos('SQLSTR',pcnnandsql);
se i=0 ou j=0 então
começar
response.write('Sequência de conexão do banco de dados ou erro de instrução SQL!');
abortar;
fim;
para n:=I+8 para j-1 faça
connstr:=connstr+pcnnandsql[n];
para n:=j+7 para comprimento(pcnnandsql) faça
sqlstr:=sqlstr+pcnnandsql[n];
//Atribuir a string de conexão obtida e a instrução SQL para ADOconnection e ADOQuery respectivamente
fadodm.adoconnection1.connstring:=connstr;
fadodm.adoquery1.sql.add(sqlstr);
//A seguir está o processo de abertura do banco de dados e execução da paginação
tentar
fadodm.adoquery1.open;
//Abre o banco de dados
rs:=fadodm.adoquery1.recordset;
//Obtém o URL e o número da página aberta atualmente
tentar
se request.servervariable['url'].count>0 então
cur_url:= request.servervariable.item['url'];
se request.querystring['page_no'].count>0 então
page_no:=request.querystring.item['page_no']
outro
número_página:=1;
exceto
fim;
rs.pagesize:=20;
//Definir 20 linhas por página
rs.AbsolutePage:=página_no;
// Posicionamento da página
resposta.write('total'+inttostr(rs.pagecount)+'página& ');
resposta.write('th'+inttostr(page_no)+'page& ');
//Cria um hiperlink para cada número de página
para i:=1 para rs.pagecount faça
resposta.write('<a href='+cur_url+'?page_no='+inttostr(i)+'>'
+inttostr(i)+'</a>');
//Os registros de dados são exibidos em tabelas
resposta.write('<tabela>');
//Obtém o título da tabela
resposta.write('<tr>');
para I:=0 para fadodm.adoquery1.fields.count-1 faça
resposta.write('<td>'+fadodm.adoquery1.fields[i].nomedocampo+'</td>');
resposta.write('</tr>');
j:=1
com fadodm.adoquery1 faça
while (não eof) e j<=rs.pagesize fazem
começar
resposta.write('<tr>');
//Obtém o conteúdo da tabela
para i:=1 para campos.count faça
resposta.write('<td>'+campos[i].asstring+'</td>');
resposta.write('</tr>');
próximo;
fim;
resposta.write('</table>');
fadodm.adoquery1.close;
exceto
resposta.write('Erro de dados!');
fim;
fim;
O acima é o processo de obtenção de dados de paginação universal. Deve-se observar que algumas funções causarão erros durante a compilação. Basta adicionar sysutils, classes e unidades adodb à cláusula USES.
Etapa 5: Compile e registre o componente adopage, que pode ser chamado no código ASP. O exemplo de chamada é o seguinte:
<%
escurecer webpageobj
definir webpageobj=server.createobject(padopage.adopage)
webpageobj.get_page(conn=provider=SQLOLEDB.1;presist security info=false;
ID do usuário=sa;catálogo inicial=dados_venda;fonte de dados=(local),
sqlstr=selectdo cliente)
%>
Através das etapas acima, desenvolvemos com sucesso um componente ASP com função de paginação usando Delphi.