ACC2000: First and Last Functions Return Unexpected RecordsID: Q208190
|
In the Totals row of the query design grid, you can choose the First() or Last() function to return the value of a specified field in the first or last record, respectively, of the result set returned by the query. However, these functions may appear to return arbitrary values because the records are returned in an order that may not be apparent.
Additionally, in an expression, the First() and Last() functions do not return the first and last records of the specified table or query, as you would expect. If the source is a query, the First() and Last() functions appear to ignore the sort order of the query. If the source is a table, the First() and Last() functions appear to ignore the order of the current index or primary key.
Likewise, the DFirst() and DLast() functions do not return the first and last records of the specified domain, as you would expect.
This article describes methods that you can use to return the first and
last values based on specific criteria.
The First(), Last(), DFirst(), and DLast() functions ignore sort orders, indexes, and primary keys. These functions return the first or last undeleted record based on the order in which the records were entered into the table, not the first or last record in a given sort order.
Microsoft provides programming examples for illustration only, without warranty
either expressed or implied, including, but not limited to, the implied warranties of
merchantability and/or fitness for a particular purpose. This article assumes that you
are familiar with the programming language being demonstrated and the tools used to
create and debug procedures. Microsoft support professionals can help explain the functionality
of a particular procedure, but they will not modify these examples to provide added
functionality or construct procedures to meet your specific needs. If you have limited
programming experience, you may want to contact a Microsoft Certified Solution Provider
or the Microsoft fee-based consulting line at (800) 936-5200. For more information about
Microsoft Certified Solution Providers, please see the following page on the World Wide Web:
http://www.microsoft.com/mcsp/For more information about the support options available from Microsoft, please see the following page on the World Wide Web:
http://www.microsoft.com/support/supportnet/overview/overview.aspIn some cases, compacting the database may return the results that you want. To ensure that the results will always be consistent, use one or more of the following procedures.
Sub GetFirstRecord()
Dim DB As Database, RS As Recordset
' Use the currently opened Northwind database.
Set DB = CurrentDb
' Open the Orders table as a Dynaset Type Recordset.
Set RS = DB.OpenRecordset("Orders", dbOpenDynaset)
' Move to the first record in the recordset.
RS.MoveFirst
MsgBox "The first order date is " & RS!OrderDate
' Move to the last record in the recordset.
RS.MoveLast
MsgBox "The last order date is " & RS!OrderDate
' Close the recordset and database.
RS.Close: DB.Close
End Sub
The "Remarks" section of the Help File topic, "First, Last Functions" incorrectly states that unless the query includes an ORDER BY clause, the order of records returned will be arbitrary. The correct information is that the order of records returned by the First() and Last() functions is not affected by the ORDER BY clause.
Additional query words:
Keywords : kbdta QryOthr
Version : WINDOWS:2000
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: July 6, 1999