• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1273
  • Last Modified:

Report group record counts with criteria

I have a report where I am using groups.  In one of the fields I use the COUNT function to display the number of records in the current group.

=Count("[Ticket]")

Open in new window


The COUNT function does not let you specify any CRITERIA.  I would like to have a few other fields that count a sub-set of the records in a group.
0
AviationAce
Asked:
AviationAce
  • 4
  • 3
  • 2
1 Solution
 
Jeffrey CoachmanMIS LiasonCommented:
You need to use Dcount

=Dcount("*", "YourTable", "YourField=" & SomeValue)
if the criteria is numeric
use:
=Dcount("*", "YourTable", "YourField=" & SomeValue)
if the criteria is textual
0
 
Boyd (HiTechCoach) Trimmell, Microsoft Access MVPCommented:
I use this in THE control source of a text box on reportS to count occurrences :

=Sum([myfield]>0, 1, 0)

Open in new window


Replace [myfield]>0 with any criteria you want to count.
0
 
AviationAceSole-ProprietorAuthor Commented:
@TheHiTechCoach
Is it possible to have the criteria based on a different field?

@boag2000
I thought about using DCount, but that would require me having to create an SQL statement based on what is being used to make each group.  This would be a bit cumbersome and slow.
0
Cloud Class® Course: 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.

 
Boyd (HiTechCoach) Trimmell, Microsoft Access MVPCommented:
Is it possible to have the criteria based on a different field?
Yes. Even a combination of fields. It is a completely different calculation. You can also have more that one.

The criteria can be any expression that will return true or false.


Example you want to know how many reco9rd are for Oklahoma or OK in the CustomerState field

=Sum([CustomerState]="OK" or [CustomerState]="Oklahoma", 1, 0)

Open in new window


Example if you want the count of orders between $500 and $1000 for CustomerState = OK

=Sum((([CustomerState]="OK") and ([OrderTotal]>=500 and [OrderTotal]<=11000)) , 1, 0)

Open in new window


You could use two different text box to show both of the above if you wanted.
0
 
Jeffrey CoachmanMIS LiasonCommented:
<, but that would require me having to create an SQL statement based on what is being used to make each group.  This would be a bit cumbersome and slow. >
Not sure what that means...no "SQL" is needed at all.
And the syntax will be the same for each group, so it will be neither slow or cumbersome.


Can you post a specific example?
For example you state:
"I would like to have a few other fields that count a sub-set of the records in a group.
"A few other"?
...as you can see by TheHiTechCoach's alternate approach, you still have to "hardcode" these values using either technique.

But perhaps I am not understanding something, so I will let you continue on with TheHiTechCoach, to avoid confusion.

JeffCoachman
0
 
AviationAceSole-ProprietorAuthor Commented:
I tried using the following code as the ControlSource for a Group Hedder field:
=Count(([Paid]=True)) & "/" & Count(([Paid]=False))

The COUNT is equal regardless of the criteria: EX: 33/33

Also, When I try to put the ",1,0" at the end, I get a "wrong number arguments" error.
=Count(([Paid]=True),1,0)
0
 
Jeffrey CoachmanMIS LiasonCommented:
...and did you try the docunt?
This works fine for me, see the attached sample file

...However I am still confused about your statement:
I thought about using DCount, but that would require me having to create an SQL statement based on what is being used to make each group.  This would be a bit cumbersome and slow.

Using Dcount in this way does not require SQL, nor is it cumbersome or slow...
...am I missing something?

JeffCoachman
Database183.mdb
0
 
Jeffrey CoachmanMIS LiasonCommented:
Output looks like this:
Sample output
0
 
AviationAceSole-ProprietorAuthor Commented:
@boag2000
A) Your examples are excellent!

B)  The main problem is my grouping is dynamic on this report.

I have a control that lets me change the field this it is grouped on.  This is so I can get weekly, monthly and/or yearly totals using the same report.

So, starting with your example:
=DCount("Paid","YourTable","Paid=False" & " AND " & "EmpID=" & [EmpID])
There would also have to be date criteria:
=DCount("Paid","YourTable","Paid=False" & " AND " & "EmpID=" & [EmpID] & " AND" & "[DateClosed] >= " & #01/01/2013# & " AND" & "[DateClosed] <= " & 01/31/2013)

Say for example the report is grouped by month, then that criteria changes with each header.

So, how can I use DCount?  I would have to extract the criteria used to produce each group detail/header/footer.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 4
  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now