Online Reference

Home

Microsoft Reference
Knowledge Developer Database Internet Resource Forum
Access
Database Function
ดาวน์โหลดคู่มือ

First Function, Last Function

SQL Aggregate Function, ค่าที่ส่งออกมาเป็นค่าของฟิลด์จากเรคคอร์ดแรกหรือสุดท้ายที่เป็นผลลัพธ์ของคิวรี่

ไวยากรณ์

First(expr )

Last(expr )

ตำแหน่ง expr เป็น expression ของข้อความระบุฟิลด์ที่เก็บข้อมูล ซึ่งต้องการนำมาใช้หรือเป็น expression ที่ใช้นำข้อมูลของฟิลด์นั้นมาคำนวณ ฟิลด์ใน expression สามารถเป็นชื่อฟิลด์ของ Table, ค่าคงที่ หรือฟังก์ชัน (สามารถนำใช้ฟังก์ชันที่ built-in หรือกำหนดเอง แต่ห้ามใช้ฟังก์ชันอื่นของ SQL aggregate function)

ลักษณะการประยุกต์

ฟังก์ชัน First และ Last คล้ายคลึงกับเมธอด MoveFirst และ MoveLast ของอ๊อบเจค DAO Recordset การส่งออกค่าของฟิลด์ที่ระบุเป็นเรคคอร์ดแรกหรือสุดท้าย ซึ่งเป็นผลลัพธ์จากคิวรี่ เพราะว่าโดยปกติเรคคอร์ดจะไม่ส่งค่าตามลำดับ ทำให้เรคคอร์ดที่ส่งออกดดยฟังก์ชันนี้ไม่มีกฏเกณฑ์ (แต่การจัดเรียงลำดับสามารถกำหนดด้วยคิวรี่ โดยใช้คำสั่ง ORDER BY)

ดูเพิ่มเติม

เมธอด MoveFirst, เมธอด MoveLast, เมธอด MoveNext, เมธอด MovePrevious, อ๊อบเจค Recordset(DAO Language Reference), SELECT Statement

การประยุกต์ใน Access

ใน Microsoft Access สามารถใช้ฟังก์ชัน First และ Last ในตารางออกแบบคิวรี่, ในคำสั่ง SQL ที่ SQL view ของ Query Window, หรือในคำสั่ง SQL ภายในชุดคำสั่ง Visual Basic รวมถึงการใช้ฟังก์ชัน First และ Last ในการคำนวณตัว control บนฟอร์มหรือรายงาน

ฟังก์ชัน First และ Last มีประโยชน์อย่างมากในการคำนวณตัว control บนฟอร์มหรือรายงาน เช่น มีรายงานของใบสั่งซื้อที่จัดกลุ่มด้วยฟิลด์ ShipCountry แลจัดเรียงตามฟิลด์ OrderDate สามารถใช้ฟังก์ชัน First และ Last ในการหาช่วงวันที่น้อยที่สุดหรือมากที่สุดในแต่ละกลุ่ม การกำหนดการจัดกลุ่ม ShipCountry ให้คลิกปุ่ม Sorting And Grouping บนแถบเครื่องมือ Report Design เลือก ShipCountry ในคอลัมน์ Field/Expression และตั้งค่าคุณสมบัติ GroupHeader and GroupFooter เป็น Yes ใน Design View ของรายงานให้สร้างตัว control แบบ text box ใหม่ 2 ตัวที่ส่วนล่าง(GroupFooter )ของ ShipCountry และตั้งค่าของคุณสมบัติ ControlSource ด้วย expression นี้

=First([OrderDate])

=Last([OrderDate])

เมื่อเปิดดูรายงานด้าน Print Preview จะพบวันที่แรกและสุดท้ายของแต่ละกลุ่ม Orders

หมายเหตุ ถ้าต้องการส่งค่าเรคคอร์ดแรก และสุดท้ายเป็นกลุ่มของเรคคอร์ด ให้สร้างคิวรี่ที่เรียงลำดับแบบมากไปน้อย หรือน้อยไปมาก และตั้งค่าคุณสมบัติ TopValues เป็น 1

ตัวอย่าง

ตัวอย่างการหาค่าจาก Table ชื่อ Employees เพื่อส่งออกค่าจากฟิลด์ LastName ของเรคคอร์ดแรกและสุดท้ายจาก Table โดยสมมติให้ EnumFields procedure เป็น procedure ในการพิมพ์ผลลัพธ์

Sub FirstLastX1()

Dim dbs As Database, rst As Recordset

  ' ต้องปรับปรุงคำสั่งนี้ให้มีพาร์ทของ Northwind
  Set dbs = OpenDatabase("Northwind.mdb")

  ' ส่งออกค่าจากฟิลด์ LastName ของเรคคอร์ดแรกและสุดท้ายจาก Table
  Set rst = dbs.OpenRecordset("SELECT " _
& "First(LastName) as First, " _
& "Last(LastName) as Last FROM Employees;")
  rst.MoveLast ' ย้าย Recordset

  ' เรียก EnumFields พิมพ์เนื้อหาของ Recordset โดยส่งผ่าน Recordset และความกว้างฟิลด์ที่ต้องการ
  EnumFields rst, 12
  dbs.Close

End Sub

ตัวอย่างการเปรียบเทียบการใช้ฟังก์ชัน First และ Last กับการใช้ฟังก์ชัน Min และ Max เพื่อหาค่าวันน้อยที่สุดและมากที่สุดของวันเกิดของพนักงาน

Sub FirstLastX2()

Dim dbs As Database, rst As Recordset

  ' ต้องปรับปรุงคำสั่งนี้ให้มีพาร์ทของ Northwind
  Set dbs = OpenDatabase("Northwind.mdb")

  ' หาวันที่น้อยที่สุดและมากที่สุดของวันเกิดพนักงาน
  Set rst = dbs.OpenRecordset("SELECT " _
& "First(BirthDate) as FirstBD, " _
& "Last(BirthDate) as LastBD FROM Employees;")
  rst.MoveLast ' ย้าย Recordset

  ' เรียก EnumFields พิมพ์เนื้อหาของ Recordset โดยส่งผ่าน Recordset และความกว้างฟิลด์ที่ต้องการ
  EnumFields rst, 12
  Debug.Print

  ' หาวันที่น้อยที่สุดและมากที่สุดของวันเกิดพนักงาน
  Set rst = dbs.OpenRecordset("SELECT " _
& "Min(BirthDate) as MinBD," _
& "Max(BirthDate) as MaxBD FROM Employees;")
  rst.MoveLast ' ย้าย Recordset

  ' เรียก EnumFields พิมพ์เนื้อหาของ Recordset โดยส่งผ่าน Recordset และความกว้างฟิลด์ที่ต้องการ
  EnumFields rst, 12
  dbs.Close

End Sub