[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More


display Triangles! and Circles! in a Microsoft Access Query -- Get Previous Record too

Posted on
6,999 Points
Last Modified:
Experience Level: Intermediate
crystal (strive4peace) - Microsoft MVP, Access
Love empowering people by teaching and helping them develop applications.
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased, or a down triangle if it decreased ... and stagger the markers for even greater grasp.

This lesson also covers how to handle non-American date formats, and optimize performance with a subquery.

If you like this video, please Like, Share, and Comment ~ thank you

Video Steps

1. Make a new query based on a table (MyData) with a date (TheDate) and a value (Price)

   - add date and value fields to the grid
   - sort in decending order by date

2. Add another copy of the table to the query

   - Access will '_1' to the end of the name of the copy at the top of the fieldlist to make it unique.
   - This table will represent the record for 'yesterday',  or whenever the previous value was recorded.
   - add date and value fields to the grid and give them aliases (for instance, PrevDate and PrevPrice) since field names have to be unique

3. Create a calculated field to show the difference

   - for instance --> Diff: CCur( MyData.Price - MyData_1.Price )
   - between a value in the reference record and the previous record
   - Wrap with function to convert to currency to ensure the result is the correct data type
   - the calculated field name (alias) is 'Diff' since it appears before the colon

4. Create a calculated field to show the Unicode symbol corresponding to a Circle or Triangle to graphically represent the difference

   - for instance --> UpDown: IIf([Diff]=0, Space(4) & ChrW(9899), IIf([Diff]>0, Space(8) & ChrW(11205), ChrW(11206) ) )
   - 4 spaces are added before Same to put it in the middle
   - 8 spaces are added before Increase to put it in on the right
   - IIf is Immediate 'if', evaluates a condition in 1st argument, and returns result of 2nd argument if True, or 3rd argument if False
   - The Space functions creates a string of spaces
   - UpDown is the calculated field name (alias)

5. Unicode characters

   - ChrW(9899) is a circle, indicating no change
   - ChrW(11205) is an upward-pointing triange, indicating an increase
   - ChrW(11206) is an downward-pointing triange, indicating a decrease

6. To link the two copies of the same table, use criteria to find record for latest date before the previous date

   - for instance --> DMax("TheDate", "MyData", "TheDate < #" & MyData.TheDate & "#")

7. Windows Region settings not American or ISO format

   - criteria can be  --> "TheDate < " & Format( [TheDate], sFormat )  where sFormat is:
      "\#yyyy-mm-dd\#" for ISO format, or
      "\#mm\/dd\/yyyy\#" for American format

8. To enhance performance, use a subquery instead of DMax for criteria under the previous date

   - for instance --> (SELECT Max(a.TheDate) FROM MyData as a  WHERE a.TheDate < MyData.TheDate )

Expert Comment

by:Andy Brown
Nice work Crystal - thank you for sharing.
LVL 24
thank you, Andy


Note: Some fonts have more, and better, Unicode representations than others. For Windows standard built-in fonts, Arial Unicode MS and Lucida Sans Unicode have fair coverage.  Common fonts such as Arial, times New Roman, and Calibri can be okay too.

If you cannot show the Unicode characters used to demonstrate, try these instead:

filled circle  --> 9679

down-pointing triangle --> 9660

up-pointing triangle --> 9650

Featured Post

Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

Currency codes can be obtained from many sources. The modules here retrieve them from two sources: ISO itself (the definitive source) and Currency Converter API. Both methods will allow you to maintain a table of current currency codes.
Now Recover Exchange Mailbox from Public EDB File (pub.edb) of 2010 / 2007 environment via Exchange Recovery Tools. Also, recover public folder mailbox Exchange 2013 / 2016 & restore into Exchange Server again details such as emails, contacts detail…

Keep in touch with Experts Exchange

Tech news and trends delivered to your inbox every month