مع تطور تكنولوجيا الشبكات وشعبية الإنترنت، أصبح المتصفح/الخادم هو الاتجاه السائد في تطوير البرمجيات. عند تطوير نظام تخطيط موارد المؤسسات (ERP)، اعتمد المؤلف نموذج برنامج B/S، والبنية المحددة هي SQL Server + IIS + IE تستخدم صفحة الويب ملف صفحة الخادم النشط. نظرًا لأن النظام يتضمن عددًا كبيرًا من عمليات البيانات والاستعلامات، إذا تمت كتابته بلغة نصية ASP بحتة، فسيؤدي ذلك حتمًا إلى انخفاض الكفاءة. ومن أجل تحسين الكفاءة العامة وأمن النظام، يستخدم المؤلف مكونات ASP استبدال لغة البرنامج النصي ASP.
نظرًا لوظائف دلفي القوية وكفاءتها العالية للغاية في تطوير أنظمة تطبيقات قواعد البيانات، يستخدم المؤلف بشكل شائع Delphi 5.0 لتطوير مكونات ASP (بالطبع، يمكن أيضًا استخدام Visual Basic أو VC++ لتطوير مكونات ASP نفسها على نطاق واسع). الإنترنت وInternetExPRess توفر اللوحتان المكونتان العديد من المكونات التي يمكنها إنشاء صفحات ويب مباشرة، لكن هذه المكونات تفتقر إلى وظيفة الترحيل الشائعة لعرض البيانات في صفحات الويب. كما نعلم جميعًا، يقوم ASP بإنشاء كائن مجموعة السجلات عن طريق إنشاء اتصال ADO بقاعدة البيانات، ثم يستخدم الصفحة المطلقة لمجموعة السجلات لتحديد موضع الصفحة في دلفي 5.0، تم توفير مكون ADO لتغليف مكتبة ADO الخاصة بشركة Microsoft، لذلك فهو أيضًا. لديه وظيفة تحديد المواقع الصفحة. بعد ذلك، سيقوم المؤلف بتطوير مكون ASP عام يعرض ترحيل صفحات الويب خطوة بخطوة.
الخطوة الأولى: قم بإنشاء مكتبة Activex جديدة، تسمى PadoPage، ثم قم بإنشاء فئة كائن خادم نشط جديدة، تسمى AdoPage، أي أنه يتم إنشاء مكون ASP يسمى AdoPage، ويسمى الملف Adopage.pas.
الخطوة 2: افتح "مكتبة النوع"، وقم بإنشاء أسلوب Get_Page جديد، ثم قم بإضافة معلمة Pconnandsgl إلى Get_Page لتمرير بيان اتصال قاعدة البيانات وبيان SQL. يكون تحديد المعلمة من نوع BSTR.
الخطوة 3: قم بإنشاء DataModule جديد، وأدخل مكون Adoconnection ومكون AdoQuery، وقم بتسمية وحدة البيانات AdoDataModule. نظرًا لأن الأسلوب Get_Page في المكون الذي تم إنشاؤه حديثًا يحتاج إلى الحصول على البيانات من DataModule، فأنت بحاجة إلى إضافة AdoDataModule إلى جملة الاستخدامات الخاصة بـ Adopage.pas، ثم الإعلان عن fadodm متغير لوحدة البيانات، وإضافة الطريقتين تهيئة وتدمير في في نفس الوقت، بحيث يمكن إنشاء وحدات بيانات في عمل مجموعة ASP. الكود المحدد لـ Adopage.pas هو كما يلي:
وحدة أدوبيج؛
واجهة
الاستخدامات
ComObj، SysUtils، Classes، ActiveX، AspTlb، Pbasedata_TLB، StdVcl، AdoDataModule؛
// أضف AdoDataModule إلى جملة الاستخدام
يكتب
T Adopage = فئة (TASPObject، Ibasedata)
خاص
fadodm:TAdoDataModuleform;
محمي
الإجراء OnEndPage؛
الإجراء OnStartPage(const AScriptingContext: IUnknown);
الإجراء get_page(const pconnandsql: WideString Safecall);
عام
تهيئة الإجراء؛ تجاوز؛
تدمير المدمر؛ تجاوز؛
نهاية؛
تطبيق
يستخدم نماذج ComServ؛
المدمر Tadopage.destroy;
يبدأ
موروث؛
fadodm.Destroy;
نهاية؛
الإجراء Tadopage.initialize؛
يبدأ
موروث؛
fadodm:=tadodmform.Create(forms.application);
نهاية؛
الخطوة 4: إنشاء طريقة ترحيل عامة لعرض البيانات، الكود المحدد هو كما يلي:
الإجراء Tadopage.get_page(const pconnandsql: WideString);
فار i,j,n:integer;
connstr,sqlstr:widestring;
rs:_recordset;
cur_url:سلسلة واسعة؛
page_no:عدد صحيح؛
يبدأ
// أولاً، أخرج سلسلة الاتصال وبيان SQL من المعلمات التي تم تمريرها.
pconnandsql:=uppercase(pconnandsql);
i:=pos('CONNSTR',pcnnandsql);
j:=pos('SQLSTR',pcnnandsql);
إذا كنت = 0 أو ي = 0 ثم
يبدأ
Response.write("سلسلة اتصال قاعدة البيانات أو خطأ في عبارة SQL!");
إحباط؛
نهاية؛
لـ n:=I+8 إلى j-1 افعل
connstr:=connstr+pcnnandsql[n];
من أجل n:=j+7 إلى الطول(pcnnandsql) افعل
sqlstr:=sqlstr+pcnnandsql[n];
// قم بتعيين سلسلة الاتصال التي تم الحصول عليها وبيان SQL لـ ADOconnection وADOQuery على التوالي
fadodm.adoconnection1.connstring:=connstr;
fadodm.adoquery1.sql.add(sqlstr);
// فيما يلي عملية فتح قاعدة البيانات وإجراء الترحيل
يحاول
fadodm.adoquery1.open;
// افتح قاعدة البيانات
rs:=fadodm.adoquery1.recordset;
// احصل على عنوان URL ورقم الصفحة للصفحة المفتوحة حاليًا
يحاول
إذا request.servervariable['url'].count>0 إذن
cur_url:= request.servervariable.item['url'];
إذا request.querystring['page_no'].count>0 إذن
page_no:=request.querystring.item['page_no']
آخر
page_no:=1;
يستثني
نهاية؛
rs.pagesize:=20;
// قم بتعيين 20 سطرًا لكل صفحة
rs.AbsolutePage:=page_no;
// تحديد موضع الصفحة
Response.write('total'+inttostr(rs.pagecount)+'page& ');
Response.write('th'+inttostr(page_no)+'page& ');
// أنشئ ارتباطًا تشعبيًا لكل رقم صفحة
لأني:=1 إلى rs.pagecount تفعل ذلك
Response.write('<a href='+cur_url+'?page_no='+inttostr(i)+'>'
+inttostr(i)+'</a>');
// يتم عرض سجلات البيانات في الجداول
Response.write('<table>');
// احصل على عنوان الجدول
Response.write('<tr>');
بالنسبة إلى I:=0 إلى fadodm.adoquery1.fields.count-1
Response.write('<td>'+fadodm.adoquery1.fields[i].fieldname+'</td>');
Response.write('</tr>');
ي:=1
مع fadodm.adoquery1 افعل
بينما (ليس eof) وj<=rs.pagesize يفعلان ذلك
يبدأ
Response.write('<tr>');
// احصل على محتوى الجدول
لأني:=1 إلى الحقول
Response.write('<td>'+fields[i].asstring+'</td>');
Response.write('</tr>');
التالي؛
نهاية؛
Response.write('</table>');
fadodm.adoquery1. Close;
يستثني
Response.write("خطأ في البيانات!");
نهاية؛
نهاية؛
ما ورد أعلاه هو عملية الحصول على بيانات الترحيل العامة. وتجدر الإشارة إلى أن بعض الوظائف ستتسبب في حدوث أخطاء أثناء الترجمة، ما عليك سوى إضافة sysutils والفئات ووحدات adodb إلى جملة USES.
الخطوة 5: تجميع وتسجيل مكون adopage، والذي يمكن استدعاؤه في كود ASP، مثال الاستدعاء كما يلي:
<%
صفحة ويب خافتةobj
تعيين webpageobj=server.createobject(padopage.adopage)
webpageobj.get_page(conn=provider=SQLOLEDB.1;معلومات الأمان الحالية=false;
معرف المستخدم = sa؛الكتالوج الأولي = بيانات_البيع؛ مصدر البيانات = (محلي)،
sqlstr=اختر من العميل)
%>
من خلال الخطوات المذكورة أعلاه، نجحنا في تطوير مكون ASP مع وظيفة الترحيل باستخدام دلفي.