Microsoft KB Archive/176645

= ACC: Dynamic Query to Return Records for the Previous Month =

Article ID: 176645

Article Last Modified on 1/22/2007

-

APPLIES TO


 * Microsoft Access 2.0 Standard Edition
 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q176645



Moderate: Requires basic macro, coding, and interoperability skills.



SUMMARY
This article demonstrates how to create a query that returns all the records in which the value of a Date field falls within the previous month.



MORE INFORMATION
To create a query that returns the data from the previous month based on the current date, use the Between...And operator with the DateSerial function in the Criteria of the Date field. The DateSerial function returns a date for a specified year, month, and day. The syntax of the DateSerial function is:

DateSerial(year, month, day)

The following example returns all records from the Orders table of the sample database Northwind.mdb (or NWIND.MDB in version 2.0) in which the value in the ShippedDate field (or Shipped Date field in version 2.0) falls within the previous month.

CAUTION: Following the steps in this example will modify the sample database Northwind.mdb (or NWIND.MDB in version 2.0). You may want to back up the Northwind.mdb (or NWIND.MDB) file and perform these steps on a copy of the database.

 Start Microsoft Access and open the sample database Northwind.mdb (or NWIND.mdb in version 2.0). Open the Orders table in Datasheet view. Click in the ShippedDate field (or Shipped Date field in version 2.0). On the Records menu, point to Sort and click Sort Ascending. (In version 2.0, point to Quick Sort on the Records menu, and then click Ascending.) In several of the records in which the ShippedDate field is empty, enter dates that fall within the previous month. Close the Orders table.</li>  Create the following query based on the Orders table:

<pre class="fixed_text">     Query: qryLastMonth -     Type: Select Query

Field: OrderID Table: Orders Field: OrderDate Table: Orders Field: RequiredDate Table: Orders Field: ShippedDate Table: Orders Criteria: Between DateSerial(Year(Date),Month(Date)-1,1) And DateSerial(Year(Date),Month(Date),0)

NOTE: In Microsoft Access 2.0, there is a space in the field names Order ID, Order Date, Required Date, and Shipped Date. </li> Save the query as qryLastMonth.</li> Run the qryLastMonth query. Note that it returns only the records that you changed in step 5.</li></ol>

In this example, the DateSerial function automatically handles the change in the year. In the expression in the Criteria of the ShippedDate field, the second instance of the DateSerial function sets the day argument to zero. Therefore, the expression returns the last day of the previous month. For example

<pre class="fixed_text">  DateSerial(97,1,0)

returns

<pre class="fixed_text">  12/31/96

<div class="references_section">