ASP menyediakan objek tertanam yang baik untuk operasi database. Namun fungsi lain yang kurang, seperti pencetakan laporan. Laporan domestik yang sangat kompleks sulit diimplementasikan menggunakan ASP.
Namun ASP mendukung plug-in, sehingga Anda dapat mengembangkan plug-in ASP sesuai kebutuhan. Penulis mengembangkan komponen pencetakan ASP menggunakan Delphi5.0. Selanjutnya, penulis akan mengembangkan komponen ASP umum untuk pencetakan laporan langkah demi langkah.
Langkah pertama: Buat Activex Library baru bernama PRintT, lalu buat Active Server Object Class baru bernama Print, yaitu dibuat komponen ASP bernama Print, dan file diberi nama Unit1.pas.
Langkah 2: Buka Type Library dan buat metode baru Print1 untuk mentransfer pencetakan laporan.
Langkah 3: Buat DataModule baru dan masukkan komponen Adoconnection dan komponen AdoTable. Nama filenya adalah Unit2.pas.
Langkah 4: Buat TQuickRep baru dan desain laporan yang ingin Anda cetak. Nama filenya adalah Unit23.pas. Berikut detail kode filenya:
{=============Unit1.pas===============}
satuan Unit1;
antarmuka
kegunaan
ComObj, ActiveX, AspTlb, PrintT_TLB, StdVcl;
jenis
TPrint = kelas(TASPObject, iprint)
terlindung
prosedur OnEndPage;
prosedur OnStartPage(const AScriptingContext: IUnknown);
prosedur Print1;
akhir;
pelaksanaan
menggunakan ComServ,unit2,unit23;
prosedur TPrint.OnEndPage;
mulai
warisanOnEndPage;
akhir;
prosedur TPrint.OnStartPage(const AScriptingContext: IUnknown);
mulai
warisan OnStartPage(AScriptingContext);
akhir;
prosedur TPrint.Print1;
mulai
IdearRpt.Cetak;
akhir;
inisialisasi
TAutoObjectFactory.Create(ComServer, TPrint, Class_Print,
ciMultiInstance, tmApartment);
akhir.
{===============Unit2.pas===============}
satuan Unit2;
antarmuka
kegunaan
SysUtils, Windows, Pesan, Kelas, Grafik, Kontrol, Formulir,
Dialog, Tabel DB, DB, ADODB;
jenis
TPelangganData = kelas(TDataModule)
Koneksi ADO1: Koneksi TADO;
Tabel ADOT1: Tabel TADO;
Sumber Data1: Sumber Data T;
ADOTable1NIANH: TStringField;
ADOTable1XUH: TStringField;
ADOTable1SHENQDW: TStringField;
ADOTable1SHENQRQ: TDateTimeField;
ADOTable1FARDB: TStringField;
ADOTable1FARDH: TStringField;
ADOTable1LIANXR: TStringField;
ADOTable1LIANXRDH: TStringField;
ADOTable1DANWZCDZ: TStringField;
ADOTable1JIANSXZDM: TStringField;
ADOTable1JIANSGM: TBCField;
ADOTable1ZHIGRS: Bidang TBCCD;
ADOTable1YONGDFH: TBC Bidang;
ADOTable1RIYSL: Bidang TBCCD;
ADOTable1RIPSL: Bidang TBCCD;
ADOTable1JIANZSJGD:TBCDField;
ADOTable1RANQYL: Bidang TBCCD;
ADOTable1YONGDYQ: TStringField;
ADOTable1RELYL: Bidang TBCCD;
ADOTable1JIANSXM: TStringField;
ADOTable1PIZWH: TStringField;
ADOTable1JIANSGM2: Bidang TBCCD;
ADOTable1YONGDXZDM: TStringField;
ADOTable1YONGDWZ: TStringField;
ADOTable1DONGL: TStringField;
ADOTable1XIL: TStringField;
ADOTable1NANL: TStringField;
ADOTable1BEIL: TStringField;
ADOTable1CHANG: Bidang TBCCD;
ADOTable1KUAN: TBC Bidang;
ADOTable1ZONGMJ1: TBC Bidang;
ADOTable1ZONGMJ2: TBC Bidang;
ADOTable1YOUXRQ1: TDateTimeField;
ADOTable1YOUXRQ2: TDateTimeField;
ADOTable1BEIZ: TStringField;
ADOTable1JINGB: TStringField;
ADOTable1SHENH: TStringField;
ADOTable1SHEND: TStringField;
ADOTable1SHENDRQ: TDateTimeField;
ADOTable1PICTURE: TBlobField;
pribadi
{Deklarasi pribadi}
publik
{Pernyataan publik}
akhir;
var
Data Pelanggan: Data Pelanggan;
pelaksanaan
{$R *.DFM}
akhir.
{===========Unit23.pas===============}
satuan Unit23;
antarmuka
menggunakan Windows, SysUtils, Pesan, Kelas, Grafik, Kontrol,
StdCtrls, ExtCtrls, Formulir, Quickrpt, QRCtrls;
jenis
TIdearRpt = kelas(TQuickRep)
HalamanFooterBand1: TQRBand;
HalamanHeaderBand1: TQRBand;
QRLabel1: Label TQRL;
QRLabel2: Label TQRL;
QRLabel3: Label TQRL;
QRDBText15: TQRDBTeks;
QRDBText17: TQRDBTeks;
QRDBText19: TQRDBTeks;
QRDBText13: TQRDBTeks;
QRLabel46: Label TQRL;
QRLabel47: Label TQRL;
JudulBand1: TQRBand;
QRShape1: Bentuk TQRS;
QRShape2: Bentuk TQRS;
QRShape3: Bentuk TQRS;
QRShape4: Bentuk TQRS;
QRShape5: Bentuk TQRS;
QRShape6: Bentuk TQRS;
QRLabel4: Label TQRL;
QRLabel5: Label TQRL;
QRLabel6: Label TQRL;
QRShape7: Bentuk TQRS;
QRShape8: Bentuk TQRS;
QRLabel7: Label TQRL;
QRLabel8: Label TQRL;
QRLabel11: Label TQRL;
QRLabel12: Label TQRL;
QRDBText1: TQRDBTeks;
QRDBText2: TQRDBTeks;
QRDBText4: TQRDBTeks;
QRDBText6: TQRDBTeks;
QRDBText3: TQRDBTeks;
QRShape9: Bentuk TQRS;
QRLabel9: Label TQRL;
QRDBText5: TQRDBTeks;
QRShape17: Bentuk TQRS;
QRShape22: Bentuk TQRS;
QRShape23: Bentuk TQRS;
QRShape24: Bentuk TQRS;
QRShape25: Bentuk TQRS;
QRShape26: Bentuk TQRS;
QRShape27: Bentuk TQRS;
QRShape10: Bentuk TQRS;
QRShape11: Bentuk TQRS;
QRShape12: Bentuk TQRS;
QRShape13: Bentuk TQRS;
QRShape18: Bentuk TQRS;
QRShape19: Bentuk TQRS;
QRLabel10: Label TQRL;
QRLabel13: Label TQRL;
QRLabel14: Label TQRL;
QRLabel15: Label TQRL;
QRLabel16: Label TQRL;
QRLabel17: Label TQRL;
QRLabel18: Label TQRL;
QRLabel19: Label TQRL;
QRLabel20: Label TQRL;
QRLabel21: Label TQRL;
QRLabel22: Label TQRL;
QRLabel23: Label TQRL;
QRLabel24: Label TQRL;
QRLabel32: Label TQRL;
QRLabel33: Label TQRL;
QRLabel34: Label TQRL;
QRLabel35: Label TQRL;
QRLabel36: Label TQRL;
QRShape20: Bentuk TQRS;
QRLabel37: Label TQRL;
QRLabel38: Label TQRL;
QRLabel41: Label TQRL;
QRLabel42: Label TQRL;
QRLabel43: Label TQRL;
QRLabel44: Label TQRL;
QRLabel45: Label TQRL;
QRLabel48: Label TQRL;
QRLabel49: Label TQRL;
QRLabel50: Label TQRL;
QRLabel51: Label TQRL;
QRLabel52: Label TQRL;
QRLabel53: Label TQRL;
QRLabel54: Label TQRL;
QRLabel55: Label TQRL;
QRLabel56: Label TQRL;
QRLabel57: Label TQRL;
QRLabel58: Label TQRL;
QRLabel59: Label TQRL;
QRLabel60: Label TQRL;
QRLabel61: Label TQRL;
QRShape28: Bentuk TQRS;
QRLabel62: Label TQRL;
QRLabel63: Label TQRL;
QRDBText7: TQRDBTeks;
QRDBText8: TQRDBTeks;
QRDBText9: TQRDBTeks;
QRDBText10: TQRDBTeks;
QRDBText11: TQRDBTeks;
QRDBText12: TQRDBTeks;
QRDBText14: TQRDBTeks;
QRDBText16: TQRDBTeks;
QRDBText18: TQRDBTeks;
QRDBText20: TQRDBTeks;
QRDBText21: TQRDBTeks;
QRDBText22: TQRDBTeks;
QRDBText23: TQRDBTeks;
QRDBText24: TQRDBTeks;
QRDBText25: TQRDBTeks;
QRDBText26: TQRDBTeks;
QRDBText27: TQRDBTeks;
QRDBText28: TQRDBTeks;
QRDBText29: TQRDBTeks;
QRDBText30: TQRDBTeks;
QRDBText31: TQRDBTeks;
QRDBText32: TQRDBTeks;
QRDBText33: TQRDBTeks;
QRDBText34: TQRDBTeks;
QRDBText35: TQRDBTeks;
QRMemo4: TQRMemo;
QRDBText36: TQRDBTeks;
QRDBText37: TQRDBTeks;
QRDBText38: TQRDBTeks;
pribadi
publik
akhir;
var
IdearRpt: TIdearRpt;
pelaksanaan
menggunakan unit2;
{$R *.DFM}
akhir.
{==========PrintT.dpr============}
perpustakaan CetakT;
{%File 'Cetak.asp'}
kegunaan
ComServ,
PrintT_TLB di 'PrintT_TLB.pas',
Unit1 di 'Unit1.pas' {Cetak: CoClass},
Unit2 di 'Unit2.pas' {CustomerData: TDataModule},
Unit23 di 'Unit23.pas' {IdearRpt: TQuickRep};
ekspor
DllGetClassObject,
DllDapat Bongkar Sekarang,
DllRegisterServer,
DllBatalkan RegistrasiServer;
{$R *.TLB}
{$R *.RES}
mulai
IdearRpt := TIdearRPt.Create(NiL);{penting}
akhir.
Langkah 5: Kompilasi dan daftarkan komponen PrintT, yang dapat dipanggil dalam kode ASP. Contoh pemanggilannya adalah sebagai berikut:
<% Setel DelphiASPObj = Server.CreateObject("PrintT.Print")
DelphiASPOBj.Cetak1
%>
Melalui langkah-langkah di atas, kami telah berhasil mengembangkan komponen ASP dengan fungsi pelaporan menggunakan Delphi. Tentu saja, penulis hanya memperkenalkan ide sederhana, dengan harapan bisa menjadi titik awal.