ภาพรวม
---- ตอนนี้มีบทความมากมายที่ใช้ ASP เพื่อให้ได้การแบ่งแยกแบบไดนามิก อย่างไรก็ตามในแอพพลิเคชั่นทางวิศวกรรมจริงปริมาณของข้อมูลดั้งเดิมมักจะมีขนาดใหญ่มากและการประมวลผลของข้อมูลต้นฉบับค่อนข้างช้า
---- มีสองวิธีหลักในการแก้ปัญหาข้างต้น: หนึ่งคือการแก้ไขเงื่อนไขการสืบค้นค่อนข้างใช้เงื่อนไขการสืบค้นที่ค่อนข้างคงที่เพื่อประมวลผลข้อมูลต้นฉบับสร้างไลบรารีข้อมูลขนาดเล็กขนาดเล็ก ตรงกลาง แม้ว่าสิ่งนี้จะปรับปรุงประสิทธิภาพของโปรแกรม แต่จะส่งผลกระทบต่อความยืดหยุ่นของโปรแกรมและเซิร์ฟเวอร์จำเป็นต้องประมวลผลและรักษาข้อมูลต้นฉบับเป็นประจำ อีกวิธีหนึ่งคือการบันทึกแบบสอบถามทางฝั่งเซิร์ฟเวอร์ แม้ว่าสิ่งนี้จะไม่สามารถปรับปรุงประสิทธิภาพของแบบสอบถามได้ แต่เทอร์มินัลเซิร์ฟเวอร์สามารถตอบสนองได้อย่างรวดเร็วเมื่อมีการเปลี่ยนไคลเอนต์ การตระหนักถึงวิธีแรกนั้นค่อนข้างง่าย
วิธีการดำเนินการ
---- บันทึกผลลัพธ์การสืบค้นบนเซิร์ฟเวอร์ในอาร์เรย์แบบไดนามิกนั่นคือประกาศอาร์เรย์แบบไดนามิกสองมิติระหว่างกระบวนการ session_onstart เมื่อเซิร์ฟเวอร์ได้รับแอปพลิเคชันที่ส่งโดยไคลเอนต์ผู้ตัดสินคนแรกว่าแอปพลิเคชันเป็นข้อสงสัยตามเงื่อนไขหรือการเปลี่ยนแปลงหน้า อาร์เรย์
การใช้งานโปรแกรม:
---- 1. กำหนดอาร์เรย์สองมิติและตัวแปรอื่น ๆ
| ต่อไปนี้เป็นส่วนของรหัส: Sub Session_onstart สลัว tempdb () Redim Preserve Tempdb (1,2) เซสชัน ("storedArray") = tempdb 'กำหนดอาร์เรย์เซสชัน เซสชัน ("ipagecount") = 0 เซสชัน ("ipageno") = 0 - สิ้นสุดย่อย |
---- 2. เรียกขั้นตอนการจัดเก็บเพื่อส่งคืนข้อมูล
| ต่อไปนี้เป็นส่วนของรหัส: sub getrcordset (strbbmc, strkssj, strzzsj, strnodecode, strfxzl) '' พารามิเตอร์เป็นชื่อรายงานและข้อ จำกัด ต่าง ๆ เลือก case strbbmc กรณี "แบบฟอร์มสรุปธุรกรรม" strcnn = "ผู้ให้บริการ = msdasql; dsn = sqldb; UID = SA; ตั้งค่า objcnn = server.createObje ("adodb.connection")) objcnn.CommandTimeOut = 9999999 objcnn.connectiontimeout = 99999999 objcnn.cursorLocation = aduseclient objcnn.open strcnn '' เปิดการเชื่อมต่อ ตั้งค่า objrs = server.createObject ("ADODB.RecordSet") objrs.pagesize = ipagesize objrs.cachesize = ipagesize objrs.open "sszhatmlog '" & strkssj & "' ' - - Adlockreadonly, 1 'ดำเนินการตามขั้นตอนการจัดเก็บกลับไปยังผลลัพธ์การสืบค้น - สิ้นสุดย่อย |
---- 3. บันทึกผลลัพธ์การสืบค้นไปยังอาร์เรย์แบบไดนามิก
| ต่อไปนี้เป็นส่วนของรหัส: saverecordset ย่อย () ถ้า objrs.eof = false แล้ว objrs.movelast เซสชัน ("irowcount") = objrs.rcordcount เซสชัน ("ifieldCount") = objrs.fields.count เซสชัน ("ipagecount") = objrs.pagecount Redim Preserve Temparray (เซสชัน ("irowcount"), เซสชั่น ("ifieldCount")))) 'Temparray เป็นอาร์เรย์แบบไดนามิกสองมิติ กำหนดขนาดตามขนาดชุดบันทึก objrs.movefirst icount = 0 ทำในขณะที่ objrs.eof = เท็จ icount = icount + 1 สำหรับ i = 1 ถึงเซสชัน ("ifieldCount") Temparray (icount, i) = objrs.fields.item (i -1) ต่อไป objrs.movenext วง เซสชัน ("storedArray") = temparray objrs.close อื่น เซสชัน ("ipagecount") = 0 สิ้นสุดถ้า สิ้นสุดย่อย |
---- 4. แสดงเนื้อหาบันทึก
| ต่อไปนี้เป็นส่วนของรหัส: sub showrecord () - localray = เซสชัน ("storedarray") ishowTotal = (ipagecurrent -1) * ipagesize + 1 irowloop = 1 ทำทำไม irowloop <= ipagesize และ ishowtotal <= เซสชัน ("irowcount") Response.write ("<ter>") สำหรับ i = 1 ถึงเซสชัน ("ifieldCount") Response.write ("<td>" & localray (ishowtotal, i)) ถัดไป Response.write ("</tr>) ishowtotal = ishowtotal + 1 irowloop = irowloop + 1 ลูป Response.write ("</bable>") ถ้า ipagecurrent <> 1 และ ipagecurrent <เซสชัน ("ipagecount") แล้ว - <ster> <a href = "db_pag.asp? page = < % = ipagecurrent -1 %> "> หน้าก่อนหน้า < /a> <a href = "db_pag.asp? page = < % = ipagecurrent + 1 %>"> หน้าสุดท้าย </a> </enter> - อื่น ถ้า ipagecurrent <> 1 แล้ว - <ster> <a href = "db_pag.asp? page = < % = ipagecurrent -1 %> "> หน้าก่อนหน้า </a> </enter> - สิ้นสุดถ้า ถ้า ipagecurrent <เซสชัน ("ipagecount") - <center> <a href = "db_pag.asp? page = < % = ipagecurrent + 1 %> "> หน้าใหม่ < /a> </enter> - สิ้นสุดถ้า สิ้นสุดถ้า สิ้นสุดย่อย |