Query Tutorials Index:
Choose Function Example
Choose function in MS Access: Have you ever had to create several reports that were almost
identical but had different order for the columns and a different sort
order? Many of these reports can be done in one intelligent
report and query combination with the Access Command: Choose function.
Blue Claw Database Design is your premier source of Microsoft Access programming and database support. Both small business and department-level databases. Desktop installation as well as cloud/internet based solutions.
Both combo boxes have the same Row Source. Note that there are two columns in the row source; the first is a number (1, 2) and the second is the name of the field to be included in the report and sorted by.
The choose code looks like this:
Note that we will always retrieve the employee's Pay_Rate field, however this could be variable as well. You'll also need to see the example code for the query to see how the Order By clause works for this Access choose command example:
Choose(Val([forms]![form1]![field1_combo]),[SSN],[Employee_No]) AS Field1,
Here's the resulting report using the choose function:
The second trick is how I got the column headings to come out correctly... All that's required is one line of VBA code for each label.. but before I show that here is the design view of the report:>
Ok, let's see how the VBA code assigns the correct values to the labels:
Option Compare Database
Don't be confused by the Replace function command... all that does is get rid of underscore character in the field name (Employee_No to Employee No).
Using the Access Choose function query can be extended to numerous fields and could probably be used for aggregate functions too, but I haven't tried that yet. The alternative to using the Access Choose command is to write many lines of VBA code in the report or behind the parameter form (Form1).
You can also use the choose function to pass parameters to an Access Query.
More Choose Command Examples
The choose command is similar to the Decode function in
Oracle. Assume the same setup as the
By Clause example but add a 3rd option for sorting by Address.
See below how the choose function expands your capabilities.
Note: Entry in Forms!F_Emp!Sort_Option must be an integer and it is best to force it to a number with the Val() function. You can have up to 29 options and you can use the Choose Function in each part of the query except the From clause.
The choose function can be used in each part of a query, except possible the From clause.
2nd Choose Example
My boss wants an employee salary report and on odd days of the month he wants the data to show by last name then first name. On the even days of the month he wants the data the other way, first name followed by last name.
Just in case you ever have a boss like that - here is the solution:
Create a parameter form for the report. Here we have created Form1. Then create the SQL query text using the choose function as shown:
Below you'll see that when we change the choice field to 2 the last name appears first followed by the first name:
The slight trick to this solution is that we use two Choose function statements in each query. The first choose is used for the Name1 field and the second choose is used for the Name2 field.
Copyright 2000-2018 Blue Claw Database Design
Development in Microsoft Access, Microsoft SQL/Server and Azure
See our SQL/Server Development and Access Migration Tutorials