ฟังก์ชั่นการแสดงฐานข้อมูลทั่วไป ข้อกำหนดมีดังนี้
1. สามารถแสดงฟิลด์ที่ระบุได้ แน่นอนว่าชื่อฟิลด์และข้อความที่แสดงอาจแตกต่างกัน
2. สามารถสืบค้นหลายช่องพร้อมกันได้ รองรับวิธีการสืบค้นทั้งแบบคลุมเครือและแม่นยำ
3. มีโหมดการแสดงผลสองโหมด: การจัดเรียงแนวนอนและการจัดเรียงฟิลด์แนวตั้ง
4. สามารถแบ่งหน้าอัตโนมัติได้
5. สามารถกำหนดจำนวนระเบียนที่จะแสดงในแต่ละหน้าได้ นั่นก็เพียงพอแล้วสำหรับข้อกำหนดใหญ่นี้ Ayu เขียนฟังก์ชันต่อไปนี้
อันที่จริง Ayu เขียนฟังก์ชันสองรายการไว้ที่นี่ ฟังก์ชันหนึ่งคือ TABDISP() ซึ่งใช้เพื่อแสดงเนื้อหาของตารางที่ระบุ และอีกฟังก์ชันหนึ่งคือ ER() ซึ่งเป็นฟังก์ชันการจัดการข้อผิดพลาดเล็กน้อย
ฟังก์ชันนี้มี 5 พารามิเตอร์ (จำนวนมาก) จะต้องป้อนพารามิเตอร์แต่ละรายการพร้อมข้อมูลและต้องไม่เว้นว่างไว้ ไม่เช่นนั้นจะเกิดข้อผิดพลาด
1(TAB) ชื่อของตารางที่จะเรียก
2 (DISPFILD) ควรแสดงฟิลด์ใดในตาราง หากชื่อฟิลด์แตกต่างจากอักขระที่จะแสดง ให้คั่นด้วย < ตัวอย่างเช่น ชื่อฟิลด์ใดฟิลด์หนึ่งคือ: IMG แต่ควรแสดงเป็น: รูปภาพในหน้านั้นก็แค่เขียน For IMG<รูปภาพหากมีหลายช่องให้ใช้ "," เพื่อแยกแต่ละช่อง อนิจจามันยาว
3(FINDFILD) ฟิลด์ใดที่จะสอบถาม และชื่อฟิลด์และอักขระที่จะแสดงจะถูกคั่นด้วย <
4(PAGEN) จำนวนระเบียนที่แสดงในแต่ละหน้า
5(FH) ทิศทางการแสดงผล เมื่อเป็น S จะแสดงในแนวตั้ง เมื่อเป็น H จะแสดงในแนวนอน
ค่าที่ส่งคืนของฟังก์ชันจะเป็นจริงเมื่อไม่มีข้อผิดพลาด มิฉะนั้นจะเป็นเท็จ
ฟังก์ชันนี้ไม่รวมส่วนของการเชื่อมต่อกับฐานข้อมูล ดังนั้นคุณต้องเชื่อมต่อกับไลบรารีด้วยตนเอง นอกจากนี้ สำหรับการใช้งานซ้ำๆ คุณสามารถบันทึกฟังก์ชันนี้ลงในไฟล์แล้วรวมไฟล์นี้เมื่อจำเป็น
ลองดูฟังก์ชั่นต่อไปนี้: (อย่าพลาดที่จะอ่าน ฉันจะให้ตัวอย่างการใช้งานในตอนท้าย)
<%
'ต่อไปนี้จะกำหนดฟังก์ชัน TABDISP() สำหรับการแสดงตาราง, พารามิเตอร์ TAB, ชื่อของตารางที่จะแสดง, DISPFILD, ฟิลด์ที่จะแสดง, FINDFILD, ฟิลด์แบบสอบถาม, PAGEN, จำนวนที่แสดงต่อหน้า, fh, ทิศทางของการแสดงผล
'หากแสดงผลสำเร็จ ค่าที่ส่งคืนจะเป็นจริง หากไม่สำเร็จ ค่าที่ส่งคืนจะเป็นเท็จ
'ใช้เพื่อแยกหลายช่อง
'ฟิลด์แบบสอบถามจะต้องรวมอยู่ในฟิลด์แสดงผล'
'หากชื่อฟิลด์แตกต่างจากชื่อที่จะแสดง ให้ใช้ < เพื่อแยกชื่อฟิลด์และชื่อที่แสดง ต้องคั่นชื่อฟิลด์และอักขระที่แสดงด้วย < เพื่อให้ค้นหาฟิลด์
'ทิศทางการแสดงผล FH คือ "H" สำหรับการแสดงผลแนวนอน "S" สำหรับการแสดงผลแนวตั้ง คำนึงถึงขนาดตัวพิมพ์
ฟังก์ชั่น TABDISP (TAB, DISPFILD, FINDFILD, PAGEN, FH)
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ถ้า DISPFILD="" แล้ว DISPFILD="*"
ถ้า PAGEN = "" แล้ว PAGEN = 15
DISPFILD1=DISPFILD&","
findfild1=findfild&","
หรี่ findl (10), findr (10)
i1=1
ทำในขณะที่ instr(findfild1,",")<>0
star=instr(findfild1,",")
findl(i1)=ซ้าย(findfild1,star-1)
findr(i1)=findl(i1)
fildbak=findl(i1)
findl(i1)=ซ้าย(fildbak,instr(fildbak,"<")-1)
findr(i1)=right(fildbak,len(fildbak)-instr(fildbak,"<"))
findfild1=right(findfild1,len(findfild1)-ดาว)
i1=i1+1
วนซ้ำ
Response.Write "<table border='0' width='100%' cellspacing='0'><tr><form method='GET'>"
การตอบสนองเขียน "<TD > " 'width='50%'
ถ้า SESSION("FLMENULBUP")<>"" แล้ว
Response.Write "คอลัมน์ปัจจุบัน: <A HREF='FLMEN.ASP?MENULB="&SESSION("FLMENULBUP")&"'>"&MID(SESSION("FLMENULBUP"),4,200)&"</A>"
สิ้นสุด ถ้า
ถ้า SESSION("flmenulb")<> SESSION("FLMENULBUP") แล้ว
การตอบสนองเขียน " >> <A HREF='FLMEN.ASP?menulb="&SESSION("FLMENULBUP")&"&LB="&SESSION("flmenulb")&"'>"&MID(SESSION("flmenulb"),4,200 )&"</A>"
สิ้นสุด ถ้า
Response.Write "</TD><td align='right' ></td><td align='right'><table border='0' cellspacing='0' cellpadding='0'> "
การตอบสนองเขียน "<tr><td rowspan='2'><img src='img/SEARCH.GIF' width='50'> </td>"
สำหรับ i3=1 ถึง i1-1
การตอบสนองเขียน "<td>"&findr(i3)&":</td>"
ต่อไป
การตอบกลับเขียน "</tr><tr>" '<td></td>
สำหรับ i2=1 ถึง i1-1
Response.Write "<td><input type='text' name='key_word"&i2&"' size='8' value=''></td>"
ถัดไป
เขียน "<tr></table></td><td width='20%'> <input type='checkbox' name='find_fr' value='yes'>Accurate<input type='submit ' value='Start' name='B_FIND'></td>"
Response.เขียน "</form> </tr></table>"
find_fr=request("find_fr")
ทีเจ = ""
urlr="&find_fr="&find_fr
findlrdisp = ""
สำหรับ I3=1 ถึง I1-1
TJ1=คำขอ("KEY_WORD"&I3)
urlr=urlr&"&key_word"&i3&"="&tj1
ถ้า TJ1=FINDR(I3) หรือ TJ1="" แล้ว
TJ1=""
อื่น
ถ้า find_fr<>"ใช่" แล้ว
findlrdisp=findlrdisp&findr(i3)&"มี ""&TJ1&"" "
tj1=" และ "&findL(I3)&" เช่น '%"&TRIM(TJ1)&"%' "
อื่น
findlrdisp=findlrdisp&findr(i3)&"是""&TJ1&""
tj1=" และ "&FINDL(I3)&" = '"&TRIM(TJ1)&"' "
สิ้นสุดถ้า
สิ้นสุด ถ้า
TJ=TJ&TJ1
ถ้า TJ = "" แล้ว
ท็อปSN=" ท็อป 300 "
อื่น
ท็อปSN=""
สิ้นสุด ถ้า
ถัดไป
dim fild (35), dispfil (35), dispfildlr
dispfildlr = ""
ผม=1
dispfild1=dispfild1
ทำในขณะที่ instr(dispfild1,",")<>0
star=instr(dispfild1,",")
fild(i)=ซ้าย(dispfild1,star-1)
dispfil(i)=fild(i)
ถ้า instr(fild(i),"<"<>0 แล้ว
fildbak=fild(i)
fild(i)=ซ้าย(fildbak,instr(fildbak,"<")-1)
dispfil(i)=right(fildbak,len(fildbak)-instr(fildbak,"<"))
สิ้นสุดถ้า
dispfildlr=dispfildlr&fild(i)&","
dispfild1=right(dispfild1,len(dispfild1)-ดาว)
ฉัน=ฉัน+1
วนซ้ำ
dispfildlr=ซ้าย(dispfildlr,len(dispfildlr)-1)
SQL="SELECT "&topsn&" id,"&DISPFILDlr&" FROM "&TAB&" WHERE ID<>-1 "&tj&" เรียงลำดับตาม -ID"
'การตอบสนองเขียน sql'
session("tabsql")=sql
ตั้งค่า rs=Server.CreateObject("ADODB.RecordSet")
rs.เปิด sql,conn,1,3
ถ้าไม่ใช่ rs.eof แล้ว
Pagesn=request("pagesn")
ถ้า Pagesn<=0 หรือ Pagesn="" ดังนั้น Pagen=1
rs.pagesize=เพจ
pagezs=rs.pagecount
ถ้า cint(PAGESN)>pagezs แล้ว pagen=PAGEZS
zs=rs.recordcount
หน้า=(pagesn-1)*pagen
rs.ย้ายหน้า1
ถ้า findlrdisp<>"" ให้ Response.Write "หลังจากค้นหาแล้ว บันทึกของ "&findlrdisp&" จะเป็นดังนี้:"
การตอบสนองเขียน "<table border='0' width='90%'>"
ถ้า zs>=300 และ topsn<>"" แล้ว
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>จำนวนทั้งหมดมีขนาดใหญ่มาก รายการ "&ZS&" รายการแรกถูกแสดงในปัจจุบัน โดยแบ่งเป็น ลงในหน้า "&PAGEZS&" ตอนนี้คือหน้า "&PAGESN&"</td>"
อื่น
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>มีรายการ "&ZS&" ทั้งหมด แบ่งออกเป็นหน้า "&PAGEZS&" ปัจจุบัน หน้าคือ "&PAGESN&" หน้า</td>"
สิ้นสุดถ้า
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urllr&"'>หน้าก่อนหน้า</A></td>"
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urllr&"'>หน้าถัดไป</A></td>"
Response.Write "<td width='24%' ALIGN='RIGHT'>ข้ามไปที่หน้า"
Response.Write "<input type='text' name='PAGESN' size='2'>หน้า<input type='submit' value='GO' name='B1'></td></form> "
Response.เขียน "</tr></table> "
ถ้า fh = "H" แล้ว
Response.Write " <table border='0' width='100%' cellspacing='1' cellpadding='0'>"
Response.Write " <tr bgcolor='#EDBAA5' align='center'> "
สำหรับ ii=1 ถึง i-1
การตอบสนองเขียน "<td>"&dispFIL(ii)&"</td>"
ต่อไป
ตอบกลับเขียน "</tr>"
สำหรับ iii=1 เพื่อเพจ
การตอบกลับเขียน "<tr bgcolor='#FFFAEE'>"
สำหรับ II=1 ถึง I-1
การตอบสนองเขียน "<td>"&RS(fild(II))&"</td>"
ต่อไป
ตอบกลับเขียน "</tr>"
RS.MOVENEXT
ถ้า rs.eof ให้ออกเพื่อ
ต่อไป
ตอบกลับเขียน "</table>"
อื่น
Response.Write " <table border='0' width='100%' cellspacing='1' cellpadding='0'>"
สำหรับ iii=1 เพื่อเพจ
สำหรับ II=1 ถึง I-1
การตอบสนองเขียน "<tr><td bgcolor='#EDBAA5' ALIGN='RIGHT' WIDTH='20%'>"&dispFIL(ii)&":</td><td bgcolor='#FFFAEE'>"&RS (ฟิล(II))&"</td></tr>"
ต่อไป
การตอบสนองเขียน "<tr height='1'><td bgcolor='#CFBA9E' colspan='2' ALIGN='RIGHT' WIDTH='20%'> </td></tr>"
RS.MOVENEXT
ถ้า rs.eof ให้ออกเพื่อ
ต่อไป
ตอบกลับเขียน "</table>"
สิ้นสุด ถ้า
฿.ปิด
การตอบสนองเขียน "<table border='0' width='90%'>"
ถ้า zs>=300 และ topsn<>"" แล้ว
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>จำนวนทั้งหมดมีขนาดใหญ่มาก รายการ "&ZS&" รายการแรกถูกแสดงในปัจจุบัน โดยแบ่งเป็น ลงในหน้า "&PAGEZS&" ตอนนี้คือหน้า "&PAGESN&"</td>"
อื่น
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>มีรายการ "&ZS&" ทั้งหมด แบ่งออกเป็นหน้า "&PAGEZS&" ปัจจุบัน หน้าคือ "&PAGESN&" หน้า</td>"
สิ้นสุดถ้า
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urllr&"'>หน้าก่อนหน้า</A></td>"
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urllr&"'>หน้าถัดไป</A></td>"
Response.Write "<td width='24%' ALIGN='RIGHT'>ข้ามไปที่หน้า"
Response.Write "<input type='text' name='PAGESN' size='2'>หน้า<input type='submit' value='GO' name='B1'></td></form> "
Response.เขียน "</tr></table> "
อื่น
ตอบกลับเขียนว่า "ไม่พบบันทึกที่เหมาะสม"
สิ้นสุดถ้า
ถ้าเอ้อ() แล้ว
tabdisp=เท็จ
อื่น
tabdisp=จริง
สิ้นสุดถ้า
ฟังก์ชัน END
ฟังก์ชัน Er() 'ฟังก์ชันการจัดการข้อผิดพลาด
ถ้า Err.Number = 0 แล้ว
เอ่อ=เท็จ
อื่น
ผิดพลาด.เคลียร์
เอ่อ=จริง
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
-
ในที่สุดก็อ่านฟังก์ชั่นจบแล้ว...
คุณเหนื่อยนิดหน่อย แต่ไม่สำคัญว่าคุณจะมองให้ดีหรือไม่ ยังไงก็ตาม นี่คือตัวอย่างการใช้งาน
ขั้นแรก เราจะบันทึกฟังก์ชันก่อนหน้าซึ่งเป็นส่วนที่อยู่ระหว่าง <% และ %> ลงในไฟล์ชื่อ TABDISP.ASP
รหัสมีดังนี้:
แสดงตารางบัญชีรายชื่องาน ชื่อตาราง: ZG
มีหลายช่อง ได้แก่ ID, ชื่อ, ตำแหน่งงาน, TEL BP, DZ (ที่อยู่
)
- - - - - -
การเชื่อมต่อกับฐานข้อมูลถูกข้ามที่นี่และจะไม่ถูกเขียนขึ้น
-
<!--#include file="TABDISP.asp"-->
-
DISP = "ชื่อ, ตำแหน่ง, ชื่อ, TEL<โทรศัพท์,BP<เพจจิ้ง,DZ<ที่อยู่"
FIND="ชื่อ<ชื่อ ตำแหน่ง<ตำแหน่ง DZ<ที่อยู่"
เลขหน้า = "15"
FH = "เอช"
TAB = "ZG"
ถ้าไม่ใช่ TABDISP (TAB, DISP, ค้นหา, PAGEN, FH) แล้ว
response.write "เกิดข้อผิดพลาด"
สิ้นสุด ถ้า
ตั้งค่า CONN=ไม่มีอะไร
-
เพียงตั้งชื่อไฟล์ให้กับเนื้อหาข้างต้นแล้วทุกอย่างจะเรียบร้อย