Seree Chinodom seree@buu.ac.th Recordset Object Seree Chinodom seree@buu.ac.th Computer Science, BUU
Recordset Recordset หมายถึงกลุ่มของเรคอรฺดซึ่งอาจเป็นบางเรคอร์ดหรือทั้งหมดที่อยู่ในฐานข้อมูล Recordset ใช้รองรับการทำงานทั่วไปที่เกิดจากฐานข้อมูล การอ่านเรคอร์ด การเปลี่ยนแปลง การลบ การค้นหา การเรียงลำดับ
การเตรียมการใช้งาน Recordset 1. สร้าง ODBC Data Source Name 2. กำหนด User Identification และPassword ระบุ UserID รหัสผ่าน 3. ทำความเข้าใจกับโครงสร้างของระบบฐานข้อมูล
ชุดคำสั่งเบื้องต้นสำหรับการทำงานกับRecordset 1. Dim oRS 2. Set oRS = Server.CreateObject(“ADODB.Recordset”) 3. oRS.open “ชื่อตาราง”, “DSN=ชื่อdata source; UID=ชื่อผู้ใช้; PWD=รหัสผ่าน” บรรทัด 1 ประกาศตัวแปรเพื่อรองรับ Recordset บรรทัดที่ 2 เป็นการสร้าง recordset object โดยให้ตัวแปร oRS เป็นตัวอ้างอิงถึง บรรทัดที่ 3 เป็นการใช้เมธอด open กำหนดการติดต่อฐานข้อมูล
การเขียนข้อมูลRecordsetลงในHTML ใช้คำสั่ง Response.Write เขียนในแท็ก <% %>ดังนี้ <%Response.write ชื่อobject(“ชื่อฟิลด์ในตาราง”) %> หรือ <%= ชื่อobject(“ชื่อฟิลด์ในตาราง”)%> Response.Write ชื่อobject(“ชื่อฟิลด์ในตาราง”).value
การนำข้อมูลจากRecordsetเก็บลงตัวแปร นำข้อมูลเก็บลงตัวแปรเพื่อเตรียมค่าสำหรับนำไปดำเนินการ ชื่อตัวแปร = ชื่อ object(“ชื่อฟิลด์ในตาราง”) เช่น sContractID = oRS (“ContractID”) หรือ sContractID = oRS (“FirstName”) &” “& oRS (“LastName”)
การนำข้อมูลจากRecordsetเพื่อเปรียบเทียบ ใช้เป็นเงื่อนไขในข้อความสั่ง if/then/else หรือ Do … Loop if oRS (“ContractName”) =“DBA” Then ‘คำสั่งที่ให้ดำเนินการเมื่อเงื่อนไขจริง End If หรือ Do While oRS.EOF ‘คำสั่งที่ให้ดำเนินการในลูป Loop
การนำข้อมูลจากRecordset ใช้เป็นอาร์กิวเมนต์ของฟังก์ชัน นำข้อมูลมาเป็นค่า อาร์กิวเมนต์ของฟังก์ชัน vFirstName = Left(oRS(“FirstName”), 5) vPassword = Ucase(oRS(“FirstName”))
ตัวอย่าง <%@Language = VBScript%> <HMTL> <HEAD> <TITLE>เพจทดสอบการใช้งานของข้อมูลในเรคอร์ดเซต</TITLE> </HEAD> <BODY> <H3>เพจทดสอบการใช้งานของข้อมูลในเรคอร์ดเซต</H3> <% dim oRSp set oRSp = Server.CreateObject("ADODB.recordset") oRSp.Open "Products", "DSN=Northwind" oRSp.MoveFirst Response.Write "บรรทัดถัดไปเป็นการเขียนข้อมูลจากเรคอร์ดเซตลงในเพจ:<BR>" Response.Write oRSp("ProductName") & "<BR><BR>"
Response.Write "บรรทัดถัดไปเป็นการเขียนข้อมูลจากตัวแปรที่เก็บข้อมูล:<BR>" Dim varPrdName varPrdName = oRSp("ProductName") Response.Write varPrdName & "<BR><BR>" Response.Write "บรรทัดถัดไปเป็นการใช้ If…Then ในการทำงานกับข้อมูล:<BR>" If oRSp("UnitsInStock") < 50 Then Response.Write "ปริมาณสินค้าเหลือน้อยกว่า 50 หน่วย<BR><BR>" Else Response.Write "ปริมาณสินค้าเหลือมากกว่า 50 หน่วย<BR><BR>" End If Response.Write "บรรทัดถัดไปเป็นการใช้ใช้ข้อมูลเป็นอาร์กิวเมนต์ในฟังก์ชั่น:<BR>" Response.Write Ucase(oRSp("ProductName")) & "<BR><BR>" oRSp.Close Set oRSp=Nothing %> </BODY> </HTML>
การระบุตำแหน่งการใช้งานเรคอร์ดในRecordset Move ใช้ในการเลื่อนเคอร์เซอร์ของเรคอร์ดพอยน์เตอร์ไปยังเรคอร์ดก่อนหน้าหรือย้อนกลับตามตัวเลขที่ระบุไว้หลัง Move MoveFirst ใช้ในการเลื่อนเรคอร์ดพอยน์เตอร์ไปยังเรคอร์ดแรกใน recordset ถ้าใช้ในการดึงข้อมูลจะได้เรคอร์ดแรก MoveLast ใช้ในการเลื่อนเรคอร์ดพอยน์เตอร์ไปยังเรคอร์ดท้ายสุดใน recordset ถ้าใช้ในการดึงข้อมูลจะได้เรคอร์ดสุดท้าย MovePrevious ใช้ในการเลื่อนเรคอร์ดพอยน์เตอร์ไปยังเรคอร์ดก่อนหน้าเรคอร์ปัจจุบัน แต่ถ้าเรอร์ดปัจจุบันเป็นเรคอร์แรกจะเกิดข้อผิดพลาด MoveNext ใช้ในการเลื่อนเรคอร์ดพอยน์เตอร์ไปยังเรคอร์ดถัดจากเรคอร์ปัจจุบัน แต่ถ้าเรอร์ดปัจจุบันเป็นเรคอร์สุดท้ายจะเกิดข้อผิดพลาด
ตัวอย่าง mvpointer.asp <HMTL> <HEAD> <TITLE>เพจทดสอบการทำงานกับเรคอร์ดต่างๆ ในเรคอร์ดเซต</TITLE> </HEAD> <BODY> <H3>เพจทดสอบการทำงานกับเรคอร์ดต่างๆ ในเรคอร์ดเซต</H3> <% Dim oRSe Set oRSe = Server.CreateObject("ADODB.recordset") oRSe.Open "Employees", "DSN=Northwind" oRSe.MoveFirst Response.Write "บรรทัดถัดไปเป็นนามสกุลของลูกจ้าง 3 เรคอร์ดแรกจากตาราง Employees :<BR>"
ตัวอย่าง mvpointer.asp Response.Write oRSe("LastName") & ", " oRSe.MoveNext Response.Write oRSe("LastName") oRSe.Close Set oRSe=Nothing %> </BODY> </HTML>
ตัวอย่าง การแสดงผลเป็นตารางข้อมูล <HMTL> <HEAD> <TITLE>การแสดงผลข้อมูลของ 5 เรคอร์ดแรกโดยใช้ตาราง</TITLE> </HEAD> <BODY> <H3>การแสดงผลข้อมูลของ 5 เรคอร์ดแรกโดยใช้ตาราง</H3> <% Dim oRSe, iCnt Set oRSe = Server.CreateObject("ADODB.recordset") oRSe.Open "Employees", "DSN=Northwind" oRSe.MoveFirst
ตัวอย่าง การแสดงผลเป็นตารางข้อมูล(ต่อ) Response.Write "<TABLE BORDER = '1'>" For iCnt = 1 To 5 Response.Write "<TR><TD>" & oRSe("FirstName") & "</TD>" Response.Write "<TD>" & oRSe("LastName") & "</TD></TR>" oRSe.MoveNext Next %> </TABLE> </BODY> </HTML>
การแสดงผลข้อมูลทุกเรคอร์ดจากrecordset การแสดงผลข้อมูลทุกระเบียนจาก recordset จะใช้ฟังก์ชัน EOF (End Of File) ซึ่งใช้สำหรับการตรวจสอบการสิ้นสุดของเรคอร์ดใน recordset โดยค่าของฟังก์ชันนี้จะเป็น “true” เมื่อมีการเลื่อนเรคอร์ดพอยน์เตอร์เลยจากเรคอร์สุดท้ายไป ใช้ฟังก์ชัน EOF ร่วมกับ Do while …loop ดังนี้ Do while NOT oRS.EOF ‘คำสั่งประมวลผล … oRS.MoveNext Loop
ตัวอย่าง การแสดงผลข้อมูลทุกเรคอร์ด <HMTL> <HEAD> <TITLE>การแสดงผลข้อทุกเรคอร์โดยใช้ EOF </TITLE> </HEAD> <BODY> <H3>การแสดงผลข้อมูลทุกเรคอร์ดโดยใช้ EOF </H3> <% Dim oRSe Set oRSe = Server.CreateObject("ADODB.recordset") oRSe.Open "Employees", "DSN=Northwind" oRSe.MoveFirst Response.Write "<TABLE BORDER = '1'>"
ตัวอย่าง การแสดงผลข้อมูลทุกเรคอร์ด(ต่อ) Dim iCnt iCnt = 0 Do while NOT oRSe.EOF iCnt = iCnt + 1 Response.Write "<TR><TD>" & iCnt & "</TD>" Response.Write "<TD>" & oRSe("FirstName") & "</TD>" Response.Write "<TD>" & oRSe("LastName") & "</TD></TR>" oRSe.MoveNext Loop Response.Write "</TABLE><BR>" %> </BODY></HTML>
การแสดรายละเอียดของฟิลในrecordset oRS.Fields(“FieldName”) หรือ ถ้าไม่ทราบชื่อฟิลด์ oRS.Fields(#) โดยที่ # หมายถึงเลขลำดับในการอ้างถึงฟิลด์ซึ่งเริ่มต้นที่ 0,1,2,... ถ้าต้องการนับชื่อฟิลด์ทั้งหมดในrecordset ใช้คำสั่งดังนี้ oRS.Fields.Count
ตัวอย่าง <HTML> <HEAD> <TITLE>การอ่านรายละเอียดของฟิลด์ต่างๆ ในตาราง</TITLE> </HEAD> <BODY> <H3>การอ่านรายละเอียดของฟิลด์ต่างๆ ในตาราง Employees</H3> <% Set oRS=Server.CreateObject("ADODB.Recordset") oRS.Open "Employees", "DSN=Northwind" Response.Write "<TABLE BORDER=1>" For Each ofield in oRS.Fields Response.Write "<TR><TD>" & ofield.name & "</TD>" Response.Write "<TD>" & ofield.type & "</TD></TR>" Next Response.Write "</TABLE>" %>
ตัวอย่าง การนำข้อมูลจาก recordset แสดงใน List box <HTML> <HEAD> <TITLE>การใช้ข้อมูลจากเรคอร์ดเซตกับ List Box</TITLE> </HEAD> <BODY> <H3>การใช้ข้อมูลจากเรคอร์ดเซตกับ List Box</H3> <P>List of categories from categories table</P><BR> <% Dim oRSc Set oRSc=Server.CreateObject("ADODB.Recordset") oRSc.Open "Categories", "DSN=Northwind" oRSc.MoveFirst %>
<FORM METHOD="get" ACTION="ResLst.asp"> <SELECT NAME="Categories" SIZE="1"> <% Do While NOT oRSc.EOF Response.Write "<OPTION SELECTED VALUE='" & oRSc("CategoryName") & "'>" Response.Write oRSc("CategoryName") & "</OPTION>" oRSc.MoveNext Loop oRSc.Close Set oRSc=Nothing %> </SELECT> <INPUT TYPE="submit"> </FORM> </BODY> </HTML>