ด้วยการพัฒนาเทคโนโลยีเครือข่ายและความนิยมของอินเทอร์เน็ต เบราว์เซอร์/เซิร์ฟเวอร์จึงกลายเป็นกระแสหลักในการพัฒนาซอฟต์แวร์ เมื่อพัฒนาระบบ ERP ผู้เขียนได้นำโมเดลซอฟต์แวร์ B/S มาใช้ หน้าเว็บใช้ไฟล์ Active Server Page เนื่องจากระบบเกี่ยวข้องกับการดำเนินการข้อมูลและการสืบค้นข้อมูลจำนวนมาก หากเขียนด้วยภาษาสคริปต์ ASP ล้วนๆ ก็จะส่งผลให้ประสิทธิภาพต่ำอย่างหลีกเลี่ยงไม่ได้ เพื่อปรับปรุงประสิทธิภาพโดยรวมและความปลอดภัยของระบบ ผู้เขียนจึงใช้ส่วนประกอบ ASP เพื่อ แทนที่ภาษาสคริปต์ ASP
เนื่องจากฟังก์ชันอันทรงพลังของ Delphi และประสิทธิภาพสูงมากในการพัฒนาระบบแอปพลิเคชันฐานข้อมูล ผู้เขียนจึงใช้ Delphi 5.0 ในการพัฒนาส่วนประกอบ ASP มากที่สุด (แน่นอนว่า Visual Basic หรือ VC++ สามารถใช้ในการพัฒนาส่วนประกอบ ASP ได้เช่นกัน) อินเทอร์เน็ตและ InternetExPRess แผงส่วนประกอบทั้งสองมีส่วนประกอบมากมายที่สามารถสร้างเว็บเพจได้โดยตรง แต่ส่วนประกอบเหล่านี้ขาดฟังก์ชันเพจทั่วไปสำหรับการแสดงข้อมูลในเว็บเพจ ดังที่เราทุกคนทราบ ASP จะสร้างวัตถุ RecordSet โดยสร้างการเชื่อมต่อ ADO กับฐานข้อมูล จากนั้นใช้ AbsolutePage ของ RecordSet สำหรับการวางตำแหน่งหน้า ใน Delphi 5.0 ส่วนประกอบ ADO ได้รับการจัดเตรียมไว้เพื่อห่อหุ้มไลบรารี ADO ของ Microsoft ดังนั้นจึงยัง มีฟังก์ชั่นการวางตำแหน่งหน้า ถัดไป ผู้เขียนจะพัฒนาส่วนประกอบ ASP ทั่วไปที่แสดงเพจเพจทีละขั้นตอน
ขั้นตอนแรก: สร้างไลบรารี Activex ใหม่ชื่อ PadoPage จากนั้นสร้าง Active Server Object Class ใหม่ชื่อ AdoPage นั่นคือคอมโพเนนต์ ASP ชื่อ AdoPage จะถูกสร้างขึ้น และไฟล์ชื่อ Adopage.pas
ขั้นตอนที่ 2: เปิดไลบรารีประเภท สร้างเมธอดใหม่ Get_Page จากนั้นเพิ่มพารามิเตอร์ Pconnandsgl ไปยัง Get_Page เพื่อส่งผ่านคำสั่งการเชื่อมต่อฐานข้อมูลและคำสั่ง SQL การเลือกพารามิเตอร์เป็นประเภท BSTR
ขั้นตอนที่ 3: สร้าง DataModule ใหม่ ใส่ส่วนประกอบ Adoconnection และส่วนประกอบ AdoQuery และตั้งชื่อโมดูลข้อมูล AdoDataModule เนื่องจากวิธีการ Get_Page ในองค์ประกอบที่สร้างขึ้นใหม่จำเป็นต้องได้รับข้อมูลจาก DataModule คุณจึงต้องเพิ่ม AdoDataModule ในส่วนคำสั่ง Uses ของ Adopage.pas จากนั้นจึงประกาศตัวแปร fadodm ของโมดูลข้อมูล และเพิ่มสองวิธี Initialize และ Destroy ที่ ในเวลาเดียวกันเพื่อให้สร้างโมดูลข้อมูลในกลุ่ม ASP ทำงาน รหัสเฉพาะของ Adopage.pas มีดังนี้:
หน่วย Adopage;
อินเตอร์เฟซ
การใช้งาน
ComObj, SysUtils, คลาส, ActiveX, AspTlb, Pbasedata_TLB, StdVcl, AdoDataModule;
//เพิ่ม AdoDataModule ในส่วนคำสั่ง USE
พิมพ์
T Adopage = คลาส (TASPObject, Ibasedata)
ส่วนตัว
fadodm:TAdoDataModuleform;
ได้รับการคุ้มครอง
ขั้นตอน OnEndPage;
ขั้นตอน OnStartPage (const AScriptingContext: IUnknown);
ขั้นตอน get_page (const pconnandsql: WideString);
สาธารณะ
ขั้นตอนการเริ่มต้น; แทนที่;
destructor ทำลาย; แทนที่;
จบ;
การดำเนินการ
ใช้ ComServ แบบฟอร์ม;
ตัวทำลาย Tadopage.destroy;
เริ่ม
สืบทอด;
fadodm.ทำลาย;
จบ;
ขั้นตอน Tadopage.initialize;
เริ่ม
สืบทอด;
fadodm:=tadodmform.Create(forms.application);
จบ;
ขั้นตอนที่ 4: สร้างวิธีการเพจทั่วไปสำหรับการแสดงข้อมูล get_page รหัสเฉพาะมีดังนี้:
ขั้นตอน Tadopage.get_page (const pconnandsql: WideString);
var i,j,n:จำนวนเต็ม;
connstr, sqlstr: สตริงกว้าง;
RS:_บันทึก;
cur_url:สตริงกว้าง;
page_no:จำนวนเต็ม;
เริ่ม
//ขั้นแรก ให้นำสตริงการเชื่อมต่อและคำสั่ง SQL ออกจากพารามิเตอร์ที่ส่งผ่าน
pconnandsql:=ตัวพิมพ์ใหญ่(pconnandsql);
i:=pos('CONNSTR',pcnnandsql);
j:=pos('SQLSTR',pcnnandsql);
ถ้า i=0 หรือ j=0 แล้ว
เริ่ม
response.write('สตริงการเชื่อมต่อฐานข้อมูลหรือข้อผิดพลาดคำสั่ง SQL!');
ยกเลิก;
จบ;
สำหรับ n:=I+8 ถึง j-1 do
connstr:=connstr+pcnnandsql[n];
สำหรับ n:=j+7 ถึง length(pcnnandsql) do
sqlstr:=sqlstr+pcnnandsql[n];
//กำหนดสตริงการเชื่อมต่อที่ได้รับและคำสั่ง SQL ให้กับ ADOconnection และ ADOQuery ตามลำดับ
fadodm.adoconnection1.connstring:=connstr;
fadodm.adoquery1.sql.add(sqlstr);
//ต่อไปนี้เป็นกระบวนการเปิดฐานข้อมูลและดำเนินการเพจ
พยายาม
fadodm.adoquery1.open;
//เปิดฐานข้อมูล
฿:=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.ขนาดหน้า:=20;
//กำหนด 20 บรรทัดต่อหน้า
rs.หน้าสัมบูรณ์:=page_no;
//การวางตำแหน่งหน้า
response.write('total'+inttostr(rs.pagecount)+'page& ');
response.write('th'+inttostr(page_no)+'page& ');
//สร้างไฮเปอร์ลิงก์สำหรับหมายเลขหน้าแต่ละหน้า
สำหรับ i:=1 ถึง rs.pagecount ทำ
response.write('<a href='+cur_url+'?page_no='+inttostr(i)+'>'
+inttostr(i)+'</a><');
//บันทึกข้อมูลจะแสดงเป็นตาราง
response.write('<ตาราง>');
//รับชื่อตาราง
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>');
//รับเนื้อหาตาราง
สำหรับ i:=1 ถึง fields.count ทำ
response.write('<td><'+fields[i].asstring+'</td">');
response.write('</tr>');
ต่อไป;
จบ;
response.write('</table>');
fadodm.adoquery1.ปิด;
ยกเว้น
response.write('ข้อมูลผิดพลาด!');
จบ;
จบ;
ข้างต้นเป็นกระบวนการรับข้อมูลเพจสากล ควรสังเกตว่าบางฟังก์ชันจะทำให้เกิดข้อผิดพลาดระหว่างการคอมไพล์ เพียงเพิ่ม sysutils คลาสและ adodb หน่วยในส่วนคำสั่ง USES
ขั้นตอนที่ 5: คอมไพล์และลงทะเบียนส่วนประกอบ adopage ซึ่งสามารถเรียกได้ในโค้ด ASP ตัวอย่างการโทรมีดังนี้:
-
หน้าเว็บสลัวobj
ตั้งค่า webpageobj=server.createobject(padopage.adopage)
webpageobj.get_page(conn=provider=SQLOLEDB.1;presist ข้อมูลความปลอดภัย=false;
ID ผู้ใช้=sa;แค็ตตาล็อกเริ่มต้น=sale_data;แหล่งข้อมูล=(ในเครื่อง)
sqlstr=เลือกจากลูกค้า)
-
จากขั้นตอนข้างต้น เราได้พัฒนาส่วนประกอบ ASP พร้อมฟังก์ชันเพจจิ้งโดยใช้ Delphi ได้สำเร็จ