ASP fournit de bons objets intégrés pour les opérations de base de données. Cependant, d'autres fonctions font défaut, comme l'impression de rapports. Les rapports nationaux particulièrement complexes sont difficiles à mettre en œuvre à l'aide d'ASP.
Cependant, ASP prend en charge les plug-ins, vous pouvez donc développer des plug-ins ASP selon vos besoins. L'auteur a développé le composant d'impression ASP à l'aide de Delphi5.0. Ensuite, l'auteur développera étape par étape un composant ASP commun pour l'impression de rapports.
La première étape : créez une nouvelle bibliothèque Activex, nommée PRintT, puis créez une nouvelle classe d'objets Active Server, nommée Print, c'est-à-dire qu'un composant ASP nommé Print est créé et que le fichier est nommé Unit1.pas.
Étape 2 : ouvrez la bibliothèque de types et créez une nouvelle méthode Print1 pour transférer l’impression du rapport.
Étape 3 : Créez un nouveau DataModule et insérez le composant Adoconnection et le composant AdoTable. Le nom de fichier est Unit2.pas.
Étape 4 : Créez un nouveau TQuickRep et concevez le rapport que vous souhaitez imprimer. Le nom du fichier est Unit23.pas. Voici le code détaillé du fichier :
{=============Unit1.pas================}
unité Unité1 ;
interface
utilise
ComObj, ActiveX, AspTlb, PrintT_TLB, StdVcl ;
taper
TPrint = classe (TASPObject, iprint)
protégé
procédure OnEndPage ; appel sécurisé ;
procédure OnStartPage (const AScriptingContext : IUnknown);
procédure Imprimer1 ; appel sécurisé ;
fin;
mise en œuvre
utilise ComServ, unité2, unité23 ;
procédure TPrint.OnEndPage ;
commencer
héritéOnEndPage ;
fin;
procédure TPrint.OnStartPage(const AScriptingContext: IUnknown);
commencer
hérité OnStartPage (AScriptingContext);
fin;
procédure TPrint.Print1;
commencer
IdearRpt.Print;
fin;
initialisation
TAutoObjectFactory.Create(ComServer, TPrint, Class_Print,
ciMultiInstance, tmApartment);
fin.
{===============Unit2.pas================}
unité Unité2 ;
interface
utilise
SysUtils, Windows, messages, classes, graphiques, contrôles, formulaires,
Boîtes de dialogue, DBTables, DB, ADODB ;
taper
TCustomerData = classe (TDataModule)
ADOConnexion1 : TADOConnexion ;
ADOTable1 : TADOTable ;
Source de données1 : TDataSource ;
ADOTable1NIANH : TStringField ;
ADOTable1XUH : TStringField ;
ADOTable1SHENQDW : TStringField ;
ADOTable1SHENQRQ : TDateTimeField ;
ADOTable1FARDB : TStringField ;
ADOTable1FARDH : TStringField ;
ADOTable1LIANXR : TStringField ;
ADOTable1LIANXRDH : TStringField ;
ADOTable1DANWZCDZ : TStringField ;
ADOTable1JIANSXZDM : TStringField ;
ADOTable1JIANSGM : TBCDField ;
ADOTable1ZHIGRS : TBCDField ;
ADOTable1YONGDFH : TBCDField ;
ADOTable1RIYSL : TBCDFiel ;
ADOTable1RIPSL : TBCDFiel ;
ADOTable1JIANZSJGD:TBCDField ;
ADOTable1RANQYL : TBCDField ;
ADOTable1YONGDYQ : TStringField ;
ADOTable1RELYL : TBCDField ;
ADOTable1JIANSXM : TStringField ;
ADOTable1PIZWH : TStringField ;
ADOTable1JIANSGM2 : TBCDField ;
ADOTable1YONGDXZDM : TStringField ;
ADOTable1YONGDWZ : TStringField ;
ADOTable1DONGL : TStringField ;
ADOTable1XIL : TStringField ;
ADOTable1NANL : TStringField ;
ADOTable1BEIL : TStringField ;
ADOTable1CHANG : TBCDFiel ;
ADOTable1KUAN : TBCDFiel ;
ADOTable1ZONGMJ1 : TBCDFiel ;
ADOTable1ZONGMJ2 : TBCDFiel ;
ADOTable1YOUXRQ1 : TDateTimeField ;
ADOTable1YOUXRQ2 : TDateTimeField ;
ADOTable1BEIZ : TStringField ;
ADOTable1JINGB : TStringField ;
ADOTable1SHENH : TStringField ;
ADOTable1SHEND : TStringField ;
ADOTable1SHENDRQ : TDateTimeField ;
ADOTable1PICTURE : TBlobField ;
privé
{Déclarations privées}
publique
{Déclarations publiques}
fin;
var
Données client : TCustomerData ;
mise en œuvre
{$R *.DFM}
fin.
{===========Unit23.pas===============}
unité Unité23 ;
interface
utilise Windows, SysUtils, Messages, Classes, Graphiques, Contrôles,
StdCtrls, ExtCtrls, Formulaires, Quickrpt, QRCtrls ;
taper
TIdearRpt = classe (TQuickRep)
PageFooterBand1 : TQRBand ;
PageHeaderBand1 : TQRBand ;
QRLabel1 : TQRLabel ;
QRLabel2 : TQRLabel ;
QRLabel3 : TQRLabel ;
QRDBTexte15 : TQRDBTexte ;
QRDBTexte17 : TQRDBTexte ;
QRDBTexte19 : TQRDBTexte ;
QRDBTexte13 : TQRDBTexte ;
QRLabel46 : TQRLabel ;
QRLabel47 : TQRLabel ;
TitreBand1 : TQRBand ;
QRShape1 : TQRShape ;
QRShape2 : TQRShape ;
QRShape3 : TQRShape ;
QRShape4 : TQRShape ;
QRShape5 : TQRShape ;
QRShape6 : TQRShape ;
QRLabel4 : TQRLabel ;
QRLabel5 : TQRLabel ;
QRLabel6 : TQRLabel ;
QRShape7 : TQRShape ;
QRShape8 : TQRShape ;
QRLabel7 : TQRLabel ;
QRLabel8 : TQRLabel ;
QRLabel11 : TQRLabel ;
QRLabel12 : TQRLabel ;
QRDBTexte1 : TQRDBTexte ;
QRDBTexte2 : TQRDBTexte ;
QRDBTexte4 : TQRDBTexte ;
QRDBTexte6 : TQRDBTexte ;
QRDBTexte3 : TQRDBTexte ;
QRShape9 : TQRShape ;
QRLabel9 : TQRLabel ;
QRDBTexte5 : TQRDBTexte ;
QRShape17 : TQRShape ;
QRShape22 : TQRShape ;
QRShape23 : TQRShape ;
QRShape24 : TQRShape ;
QRShape25 : TQRShape ;
QRShape26 : TQRShape ;
QRShape27 : TQRShape ;
QRShape10 : TQRShape ;
QRShape11 : TQRShape ;
QRShape12 : TQRShape ;
QRShape13 : TQRShape ;
QRShape18 : TQRShape ;
QRShape19 : TQRShape ;
QRLabel10 : TQRLabel ;
QRLabel13 : TQRLabel ;
QRLabel14 : TQRLabel ;
QRLabel15 : TQRLabel ;
QRLabel16 : TQRLabel ;
QRLabel17 : TQRLabel ;
QRLabel18 : TQRLabel ;
QRLabel19 : TQRLabel ;
QRLabel20 : TQRLabel ;
QRLabel21 : TQRLabel ;
QRLabel22 : TQRLabel ;
QRLabel23 : TQRLabel ;
QRLabel24 : TQRLabel ;
QRLabel32 : TQRLabel ;
QRLabel33 : TQRLabel ;
QRLabel34 : TQRLabel ;
QRLabel35 : TQRLabel ;
QRLabel36 : TQRLabel ;
QRShape20 : TQRShape ;
QRLabel37 : TQRLabel ;
QRLabel38 : TQRLabel ;
QRLabel41 : TQRLabel ;
QRLabel42 : TQRLabel ;
QRLabel43 : TQRLabel ;
QRLabel44 : TQRLabel ;
QRLabel45 : TQRLabel ;
QRLabel48 : TQRLabel ;
QRLabel49 : TQRLabel ;
QRLabel50 : TQRLabel ;
QRLabel51 : TQRLabel ;
QRLabel52 : TQRLabel ;
QRLabel53 : TQRLabel ;
QRLabel54 : TQRLabel ;
QRLabel55 : TQRLabel ;
QRLabel56 : TQRLabel ;
QRLabel57 : TQRLabel ;
QRLabel58 : TQRLabel ;
QRLabel59 : TQRLabel ;
QRLabel60 : TQRLabel ;
QRLabel61 : TQRLabel ;
QRShape28 : TQRShape ;
QRLabel62 : TQRLabel ;
QRLabel63 : TQRLabel ;
QRDBTexte7 : TQRDBTexte ;
QRDBTexte8 : TQRDBTexte ;
QRDBTexte9 : TQRDBTexte ;
QRDBTexte10 : TQRDBTexte ;
QRDBTexte11 : TQRDBTexte ;
QRDBTexte12 : TQRDBTexte ;
QRDBTexte14 : TQRDBTexte ;
QRDBTexte16 : TQRDBTexte ;
QRDBTexte18 : TQRDBTexte ;
QRDBTexte20 : TQRDBTexte ;
QRDBTexte21 : TQRDBTexte ;
QRDBTexte22 : TQRDBTexte ;
QRDBTexte23 : TQRDBTexte ;
QRDBTexte24 : TQRDBTexte ;
QRDBTexte25 : TQRDBTexte ;
QRDBTexte26 : TQRDBTexte ;
QRDBTexte27 : TQRDBTexte ;
QRDBTexte28 : TQRDBTexte ;
QRDBTexte29 : TQRDBTexte ;
QRDBTexte30 : TQRDBTexte ;
QRDBTexte31 : TQRDBTexte ;
QRDBTexte32 : TQRDBTexte ;
QRDBTexte33 : TQRDBTexte ;
QRDBTexte34 : TQRDBTexte ;
QRDBTexte35 : TQRDBTexte ;
QRMemo4 : TQRMémo ;
QRDBTexte36 : TQRDBTexte ;
QRDBTexte37 : TQRDBTexte ;
QRDBTexte38 : TQRDBTexte ;
privé
publique
fin;
var
IdearRpt : TIdearRpt ;
mise en œuvre
utilise l'unité2 ;
{$R *.DFM}
fin.
{==========PrintT.dpr============}
bibliothèque PrintT ;
{%Fichier 'Imprimer.asp'}
utilise
ComServ,
PrintT_TLB dans 'PrintT_TLB.pas',
Unit1 dans 'Unit1.pas' {Print: CoClass},
Unit2 dans 'Unit2.pas' {CustomerData : TDataModule},
Unit23 dans 'Unit23.pas' {IdearRpt : TQuickRep} ;
exportations
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer ;
{$R *.TLB}
{$R *.RES}
commencer
IdearRpt := TIdearRPt.Create(NiL);{essentiel}
fin.
Étape 5 : Compilez et enregistrez le composant PrintT, qui peut être appelé dans le code ASP. L'exemple d'appel est le suivant :
<% Set DelphiASPObj = Server.CreateObject("PrintT.Print")
DelphiASPOBj.Print1
%>
Grâce aux étapes ci-dessus, nous avons développé avec succès un composant ASP avec fonction de reporting à l'aide de Delphi. Bien entendu, l’auteur s’est contenté d’introduire une idée simple, dans l’espoir de servir de point de départ.