Solved

Consistent Monthly Headings on Crosstab Query

Posted on 2016-08-29
4
28 Views
Last Modified: 2016-08-29
A user has requested a report that breaks down counts by month.  They will be able to request the month span within a given year.  Depending what they request there may or may not be totals for all months.

I have created a crosstab query for the data which has the counts for each month in the data pool.  If they want the report for the months 01 - 06 of the year, my crosstab query will have those results for each month.

The issue is creating the report to show these totals.  If they request a report for all months for a given year I need columns for every month 01 - 12.  If I design the report based on the crosstab query with all months I get errors in the report when the user only requests data for month 01 - 03 because columns 04 - 12 don't exist.

I ran into this situation several years ago and requested help from EE.  I'm pretty sure I was given a way to make sure the crosstab query creates column entries for all months, even if there is no data for a given month.  I'm also pretty sure it had to do with setting up all possible column headings as properties in the query.  Sadly that's all I remember and I don't have access to the application I created back then.

Does anyone know how to make sure a crosstab query generates a column for all possible entries, even if there is no data for the column?  Once I have that I can build the report based on the crosstab query and I will not get errors for columns that have no data.
0
Comment
Question by:mlcktmguy
  • 2
4 Comments
 
LVL 49

Accepted Solution

by:
Gustav Brock earned 500 total points
ID: 41775200
Insert the months in the property sheet of the query under shown/displayed column headings:

01,02,03,04,05,06,07,08,09,10,11,12

/gustav
0
 
LVL 2

Expert Comment

by:Antonio Salva Ripoll
ID: 41775449
Hi.

You can use a combination of SQL queries, including a UNION query to get a full year results.

For example, if your query is:
TRANSFORM Sum(curAmount) AS SumOfcurAmount
SELECT curYear
FROM (SELECT Year([dtDate]) AS curYear, Month([dtDate]) AS curMonth, tblAccounting.dtDate, tblAccounting.curAmount
FROM tblAccounting)
WHERE curYear=2001
GROUP BY curYear
PIVOT curMonth;

Open in new window


You can assure you have a value for all months modifiing the query in the following way:
TRANSFORM Sum(curAmount) AS SumaDecurAmount
SELECT curYear
FROM (SELECT Year([dtDate]) AS curYear, Month([dtDate]) AS curMonth, curAmount
FROM tblAccounting
UNION 
SELECT 2001 as curYear, 1 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 2 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 3 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 4 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 5 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 6 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 7 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 8 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 9 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 10 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 11 as curMonth, 0 as curAmount FROM tblAccounting
UNION 
SELECT 2001 as curYear, 12 as curMonth, 0 as curAmount FROM tblAccounting)
WHERE curYear=2001
GROUP BY curYear
PIVOT curMonth;

Open in new window


You can create the query with VBA Code, and assign this SQL to the original query of the report.

Also, if you post your query, we  could help you better.

I hope you find it useful.

Regards.

Antonio (Barcelona, Spain)
0
 
LVL 1

Author Closing Comment

by:mlcktmguy
ID: 41775676
Thanks You
0
 
LVL 49

Expert Comment

by:Gustav Brock
ID: 41775771
You are welcome!

/gustav
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

In Debugging – Part 1, you learned the basics of the debugging process. You learned how to avoid bugs, as well as how to utilize the Immediate window in the debugging process. This article takes things to the next level by showing you how you can us…
Regardless of which version on MS Access you are using, one of the harder data-entry forms to create is one where most data from previous entries needs to be appended to new records, especially when there are numerous fields and records involved.  W…
With Microsoft Access, learn how to start a database in different ways and produce different start-up actions allowing you to use a single database to perform multiple tasks. Specify a start-up form through options: Specify an Autoexec macro: Us…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now