ASP มีวัตถุในตัวที่ดีสำหรับการดำเนินงานฐานข้อมูล อย่างไรก็ตาม ยังขาดฟังก์ชันอื่นๆ เช่น การพิมพ์รายงาน รายงานในประเทศที่ซับซ้อนเป็นพิเศษเป็นเรื่องยากที่จะนำไปใช้โดยใช้ ASP
อย่างไรก็ตาม ASP รองรับปลั๊กอิน ดังนั้นคุณจึงสามารถพัฒนาปลั๊กอิน ASP ได้ตามต้องการ ผู้เขียนใช้ Delphi5.0 เพื่อพัฒนาส่วนประกอบการพิมพ์ ASP ถัดไป ผู้เขียนจะพัฒนาส่วนประกอบ ASP ทั่วไปสำหรับการพิมพ์รายงานทีละขั้นตอน
ขั้นตอนแรก: สร้างไลบรารี Activex ใหม่ชื่อ PRintT จากนั้นสร้าง Active Server Object Class ใหม่ชื่อ Print นั่นคือคอมโพเนนต์ ASP ชื่อ Print จะถูกสร้างขึ้น และไฟล์ชื่อ Unit1.pas
ขั้นตอนที่ 2: เปิดไลบรารีประเภทและสร้างวิธีการใหม่ Print1 เพื่อถ่ายโอนการพิมพ์รายงาน
ขั้นตอนที่ 3: สร้าง DataModule ใหม่และใส่ส่วนประกอบ Adoconnection และส่วนประกอบ AdoTable ชื่อไฟล์คือ Unit2.pas
ขั้นตอนที่ 4: สร้าง TQuickRep ใหม่และออกแบบรายงานที่คุณต้องการพิมพ์ ชื่อไฟล์คือ Unit23.pas ต่อไปนี้เป็นรหัสรายละเอียดของไฟล์:
{=============Unit1.pas===============}
หน่วย หน่วยที่ 1;
อินเตอร์เฟซ
การใช้งาน
ComObj, ActiveX, AspTlb, PrintT_TLB, StdVcl;
พิมพ์
TPrint = คลาส (TASPObject, iprint)
ได้รับการคุ้มครอง
ขั้นตอน OnEndPage;
ขั้นตอน OnStartPage (const AScriptingContext: IUnknown);
ขั้นตอน Print1;
จบ;
การดำเนินการ
ใช้ ComServ,unit2,unit23;
ขั้นตอน TPrint.OnEndPage;
เริ่ม
สืบทอด OnEndPage;
จบ;
ขั้นตอน TPrint.OnStartPage (const AScriptingContext: IUnknown);
เริ่ม
สืบทอด OnStartPage (AScriptingContext);
จบ;
ขั้นตอน TPrint.Print1;
เริ่ม
IdearRpt.พิมพ์;
จบ;
การเริ่มต้น
TAutoObjectFactory.Create (ComServer, TPrint, Class_Print,
ciMultiInstance, tmApartment);
จบ.
{===============หน่วย2.pas==============}
หน่วย หน่วยที่ 2;
อินเตอร์เฟซ
การใช้งาน
SysUtils, Windows, ข้อความ, คลาส, กราฟิก, การควบคุม, แบบฟอร์ม,
กล่องโต้ตอบ, DBTables, DB, ADODB;
พิมพ์
TCustomerData = คลาส (TDataModule)
ADOConnection1: การเชื่อมต่อ TADO;
ADOTable1: TADOTable;
แหล่งข้อมูล1: TDataSource;
ADOTable1NIANH: TStringField;
ADOTable1XUH: TStringField;
ADOTable1SHENQDW: TStringField;
ADOTable1SHENQRQ: TDateTimeField;
ADOTable1FARDB: TStringField;
ADOTable1FARDH: TStringField;
ADOTable1LIANXR: TStringField;
ADOTable1LIANXRDH: TStringField;
ADOTable1DANWZCDZ: TStringField;
ADOTable1JIANSXZDM: TStringField;
ADOTable1JIANSGM: TBCDฟิลด์;
ADOTable1ZHIGRS: TBCDField;
ADOTable1YONGDFH: TBCDฟิลด์;
ADOTable1RIYSL: TBCDField;
ADOTable1RIPSL: TBCDField;
ADOTable1JIANZSJGD:TBCDField;
ADOTable1RANQYL: TBCDField;
ADOTable1YONGDYQ: TStringField;
ADOTable1RELYL: TBCDฟิลด์;
ADOTable1JIANSXM: TStringField;
ADOTable1PIZWH: TStringField;
ADOTable1JIANSGM2: TBCDฟิลด์;
ADOTable1YONGDXZDM: TStringField;
ADOTable1YONGDWZ: TStringField;
ADOTable1DONGL: TStringField;
ADOTable1XIL: TStringField;
ADOTable1NANL: TStringField;
ADOTable1BEIL: TStringField;
ADOTable1CHANG: TBCDField;
ADOTable1KUAN: TBCDField;
ADOTable1ZONGMJ1: TBCDฟิลด์;
ADOTable1ZONGMJ2: TBCDฟิลด์;
ADOTable1YOUXRQ1: TDateTimeField;
ADOTable1YOUXRQ2: TDateTimeField;
ADOTable1BEIZ: TStringField;
ADOTable1JINGB: TStringField;
ADOTable1SHENH: TStringField;
ADOTable1SHEND: TStringField;
ADOTable1SHENDRQ: TDateTimeField;
ADOTable1PICTURE: TBlobField;
ส่วนตัว
{ประกาศส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
var
ข้อมูลลูกค้า: TCustomerData;
การดำเนินการ
{$R *.DFM}
จบ.
{===========Unit23.pas===============}
หน่วย หน่วยที่ 23;
อินเตอร์เฟซ
ใช้ Windows, SysUtils, ข้อความ, คลาส, กราฟิก, การควบคุม,
StdCtrls, ExtCtrls, แบบฟอร์ม, Quickrpt, QRCtrls;
พิมพ์
TIdearRpt = คลาส (TQuickRep)
PageFooterBand1: TQRBand;
PageHeaderBand1: TQRBand;
QRLabel1: TQRLabel;
QRLabel2: TQRLLabel;
QRLabel3: TQRLLabel;
QRDBText15: TQRDBText;
QRDBText17: TQRDBText;
QRDBText19: TQRDBText;
QRDBText13: TQRDBText;
QRLabel46: TQRLabel;
QRLabel47: TQRLLabel;
TitleBand1: TQRแบนด์;
QRShape1: TQRSShape;
QRShape2: TQRSShape;
QRShape3: TQRSShape;
QRShape4: TQRSShape;
QRShape5: TQRSShape;
QRShape6: TQRSShape;
QRLabel4: TQRLLabel;
QRLabel5: TQRLLabel;
QRLabel6: TQRLabel;
QRShape7: TQRSShape;
QRShape8: TQRSShape;
QRLabel7: TQRLLabel;
QRLabel8: TQRLLabel;
QRLabel11: TQRLLabel;
QRLabel12: TQRLLabel;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRDBText4: TQRDBText;
QRDBText6: TQRDBText;
QRDBText3: TQRDBText;
QRShape9: TQRSShape;
QRLabel9: TQRLLabel;
QRDBText5: TQRDBText;
QRShape17: TQRSShape;
QRShape22: TQRSShape;
QRShape23: TQRSShape;
QRShape24: TQRSShape;
QRShape25: TQRSShape;
QRShape26: TQRSShape;
QRShape27: TQRSShape;
QRShape10: TQRSShape;
QRShape11: TQRSShape;
QRShape12: TQRSShape;
QRShape13: TQRSShape;
QRShape18: TQRSShape;
QRShape19: TQRSShape;
QRLabel10: TQRLLabel;
QRLabel13: TQRLLabel;
QRLabel14: TQRLLabel;
QRLabel15: TQRLLabel;
QRLabel16: TQRLLabel;
QRLabel17: TQRLLabel;
QRLabel18: TQRLLabel;
QRLabel19: TQRLLabel;
QRLabel20: TQRLLabel;
QRLabel21: TQRLabel;
QRLabel22: TQRLLabel;
QRLabel23: TQRLabel;
QRLabel24: TQRLabel;
QRLabel32: TQRLabel;
QRLabel33: TQRLabel;
QRLabel34: TQRLabel;
QRLabel35: TQRLabel;
QRLabel36: TQRLabel;
QRShape20: TQRSShape;
QRLabel37: TQRLabel;
QRLabel38: TQRLabel;
QRLabel41: TQRLLabel;
QRLabel42: TQRLLabel;
QRLabel43: TQRLLabel;
QRLabel44: TQRLabel;
QRLabel45: TQRLabel;
QRLabel48: TQRLLabel;
QRLabel49: TQRLLabel;
QRLabel50: TQRLLabel;
QRLabel51: TQRLabel;
QRLabel52: TQRLLabel;
QRLabel53: TQRLabel;
QRLabel54: TQRLLabel;
QRLabel55: TQRLLabel;
QRLabel56: TQRLLabel;
QRLabel57: TQRLabel;
QRLabel58: TQRLLabel;
QRLabel59: TQRLLabel;
QRLabel60: TQRLLabel;
QRLabel61: TQRLabel;
QRShape28: TQRSShape;
QRLabel62: TQRLabel;
QRLabel63: TQRLabel;
QRDBText7: TQRDBText;
QRDBText8: TQRDBText;
QRDBText9: TQRDBText;
QRDBText10: TQRDBText;
QRDBText11: TQRDBText;
QRDBText12: TQRDBText;
QRDBText14: TQRDBText;
QRDBText16: TQRDBText;
QRDBText18: TQRDBText;
QRDBText20: TQRDBText;
QRDBText21: TQRDBText;
QRDBText22: TQRDBText;
QRDBText23: TQRDBText;
QRDBText24: TQRDBText;
QRDBText25: TQRDBText;
QRDBText26: TQRDBText;
QRDBText27: TQRDBText;
QRDBText28: TQRDBText;
QRDBText29: TQRDBText;
QRDBText30: TQRDBText;
QRDBText31: TQRDBText;
QRDBText32: TQRDBText;
QRDBText33: TQRDBText;
QRDBText34: TQRDBText;
QRDBText35: TQRDBText;
QRMemo4: TQRMemo;
QRDBText36: TQRDBText;
QRDBText37: TQRDBText;
QRDBText38: TQRDBText;
ส่วนตัว
สาธารณะ
จบ;
var
IdearRpt: TIdearRpt;
การดำเนินการ
ใช้หน่วย 2;
{$R *.DFM}
จบ.
{==========PrintT.dpr============}
ห้องสมุด PrintT;
{%ไฟล์ 'Print.asp'}
การใช้งาน
คอมเซิร์ฟ,
PrintT_TLB ใน 'PrintT_TLB.pas'
Unit1 ใน 'Unit1.pas' {พิมพ์: CoClass}
Unit2 ใน 'Unit2.pas' {ข้อมูลลูกค้า: TDataModule}
Unit23 ใน 'Unit23.pas' {IdearRpt: TQuickRep};
การส่งออก
DllGetClassObject,
DllCanUnloadตอนนี้
DllRegisterServer,
DllUnregisterServer;
{$อาร์ *.TLB}
{$อาร์ *.เรส}
เริ่ม
IdearRpt := TIdearRPt.Create(NiL);{จำเป็น}
จบ.
ขั้นตอนที่ 5: คอมไพล์และลงทะเบียนส่วนประกอบ PrintT ซึ่งสามารถเรียกได้ในโค้ด ASP ตัวอย่างการโทรมีดังนี้:
<% ตั้ง DelphiASPObj = Server.CreateObject ("PrintT.Print")
DelphiASPOBj.Print1
-
จากขั้นตอนข้างต้น เราได้พัฒนาส่วนประกอบ ASP พร้อมฟังก์ชันการรายงานโดยใช้ Delphi ได้สำเร็จ แน่นอนว่าผู้เขียนเพิ่งนำเสนอแนวคิดง่ายๆ โดยหวังว่าจะใช้เป็นจุดเริ่มต้น