يوفر ASP كائنات مضمنة جيدة لعمليات قاعدة البيانات. ومع ذلك، لا توجد وظائف أخرى، مثل طباعة التقارير. يصعب تنفيذ التقارير المحلية المعقدة بشكل خاص باستخدام ASP.
ومع ذلك، يدعم ASP المكونات الإضافية، لذا يمكنك تطوير المكونات الإضافية لـ ASP حسب الحاجة. قام المؤلف بتطوير مكون طباعة ASP باستخدام Delphi5.0. بعد ذلك، سيقوم المؤلف بتطوير مكون ASP مشترك لطباعة التقرير خطوة بخطوة.
الخطوة الأولى: قم بإنشاء مكتبة Activex جديدة، تسمى PRintT، ثم قم بإنشاء فئة كائن خادم نشط جديدة، تسمى Print، أي أنه يتم إنشاء مكون ASP يسمى Print، ويسمى الملف Unit1.pas.
الخطوة 2: افتح مكتبة النوع وقم بإنشاء طريقة Print1 جديدة لنقل طباعة التقرير.
الخطوة 3: قم بإنشاء DataModule جديد وقم بإدخال مكون Adoconnection ومكون AdoTable. اسم الملف هو Unit2.pas.
الخطوة 4: قم بإنشاء TQuickRep جديد وقم بتصميم التقرير الذي تريد طباعته. اسم الملف هو Unit23.pas. وفيما يلي الكود التفصيلي للملف:
{====================== الوحدة 1
الوحدة 1؛
واجهة
الاستخدامات
ComObj، ActiveX، AspTlb، PrintT_TLB، StdVcl؛
يكتب
TPrint = فئة (TASPObject، iprint)
محمي
الإجراء OnEndPage؛
الإجراء OnStartPage(const AScriptingContext: IUnknown);
الإجراء Print1؛
نهاية؛
تطبيق
يستخدم ComServ,unit2,unit23;
الإجراء Tprint.OnEndPage؛
يبدأ
inheritedOnEndPage;
نهاية؛
الإجراء Tprint.OnStartPage(const AScriptingContext: IUnknown);
يبدأ
ورثت OnStartPage(AScriptingContext);
نهاية؛
الإجراء TPrint.Print1؛
يبدأ
this.IdearRpt.Print;
نهاية؛
التهيئة
TAutoObjectFactory.Create(ComServer، TPrint، Class_Print،
ciMultiInstance, tmApartment);
نهاية.
{==========================================================================
الوحدة الوحدة 2؛
واجهة
الاستخدامات
سيسوتيلس، ويندوز، الرسائل، الطبقات، الرسومات، عناصر التحكم، النماذج،
الحوارات، DBTables، DB، ADODB؛
يكتب
TCustomerData = فئة (TDataModule)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable؛
DataSource1: 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: TBCDField;
ADOTable1RIPSL: TBCDField;
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: TBCDField;
ADOTable1KUAN: TBCDField;
ADOTable1ZONGMJ1: TBCDField;
ADOTable1ZONGMJ2: TBCDField;
ADOTable1YOUXRQ1: TDateTimeField;
ADOTable1YOUXRQ2: TDateTimeField;
ADOTable1BEIZ: TStringField;
ADOTable1JINGB: TStringField;
ADOTable1SHENH: TStringField;
ADOTable1SHEND: TStringField;
ADOTable1SHENDRQ: TDateTimeField;
ADOTable1PICTURE: TblobField;
خاص
{تصريحات خاصة}
عام
{التصريحات العامة}
نهاية؛
فار
بيانات العملاء: TCustomerData؛
تطبيق
{$R *.DFM}
نهاية.
{===================Unit23.pas========Unit23.pas
الوحدة Unit23؛
واجهة
يستخدم Windows وSysUtils والرسائل والفصول والرسومات وعناصر التحكم،
StdCtrls، ExtCtrls، النماذج، Quickrpt، QRCtrls؛
يكتب
TIdearRpt = فئة (TQuickRep)
PageFooterBand1: TQRBand؛
PageHeaderBand1: TQRBand;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRDBText15: TQRDBText;
QRDBText17: TQRDBText;
QRDBText19: TQRDBText;
QRDBText13: TQRDBText;
QRLabel46: TQRLabel;
QRLabel47: TQRLabel;
TitleBand1: 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;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRDBText4: TQRDBText;
QRDBText6: TQRDBText;
QRDBText3: TQRDBText;
QRShape9: TQRShape؛
QRLabel9: TQRLabel;
QRDBText5: TQRDBText;
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: TQRLab؛
QRLabel24: TQRLabel;
QRLabel32: TQRLab؛
QRLabel33: TQRLabel;
QRLabel34: TQRLabel;
QRLabel35: TQRLabel;
QRLabel36: TQRLabel;
QRShape20: TQRShape؛
QRLabel37: TQRLabel;
QRLabel38: TQRLabel;
QRLabel41: TQRLabel;
QRLabel42: TQRLabel;
QRLabel43: TQRLab؛
QRLabel44: TQRLabel;
QRLabel45: TQRLabel;
QRLabel48: TQRLab؛
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: TQRLab؛
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;
خاص
عام
نهاية؛
فار
IdearRpt: TIdearRpt;
تطبيق
يستخدم الوحدة 2؛
{$R *.DFM}
نهاية.
{==========PrintT.dpr============}
مكتبة PrintT؛
{%ملف "Print.asp"}
الاستخدامات
كوم سيرف,
PrintT_TLB في "PrintT_TLB.pas"،
الوحدة 1 في "Unit1.pas" {الطباعة: CoClass}،
الوحدة2 في 'Unit2.pas' {CustomerData: TDataModule}،
Unit23 في 'Unit23.pas' {IdearRpt: TQuickRep};
صادرات
دللجيتكلاسوبجيكت،
دلكان أنلود ناو،
دللريجسترسيرفر,
DllUnregisterServer;
{$R *.TLB}
{$R *.RES}
يبدأ
IdearRpt := TIdearRPt.Create(NiL);{essential}
نهاية.
الخطوة 5: تجميع مكون PrintT وتسجيله، والذي يمكن استدعاؤه برمز ASP، ويكون مثال الاستدعاء كما يلي:
<% تعيين DelphiASPObj = Server.CreateObject("PrintT.Print")
دلفي ASPOBj.Print1
%>
من خلال الخطوات المذكورة أعلاه، نجحنا في تطوير مكون ASP مع وظيفة إعداد التقارير باستخدام دلفي. وبطبيعة الحال، قدم المؤلف للتو فكرة بسيطة، على أمل أن تكون بمثابة نقطة انطلاق.