A family of Microsoft relational database management systems designed for ease of use.
Judging by its name my first guess would be that that the Enquiries between dates query is expecting parameters. This should be OK if they are references to controls on an open form, but not if the form is closed or they are simple system generated parameters.
Another possible cause: Was the data type of he [how_hear_about_us?] column defined when designing the table by using the lookup field wizard by any chance? If so, despite appearances to the contrary its value will be a hidden number, not the text you see. If this is the case to use the text value in the criterion for the DCount function it would be necessary to join the table to the referenced (lookup) table containing the text column, and return this column in the reports query rather than the foreign key column.
The use of the lookup field wizard is generally deprecated by experienced developers. For the reasons why see:
http://www.mvps.org/access/lookupfields.htm
If neither of these is the cause of the problem the only other thing which occurs to me is that the word 'between' is used in the query name. As Access includes a BETWEEN....AND operator, it may be that this is causing confusion, so wrap the query name in square brackets:
=(DCount("[how_hear_about_us?]","[Enquiries between dates]","[how_hear_about_us?] = 'Friend'"))
However, once you have ensured that the value of the control in the report is the text value not a hidden numerical value, you can conditionally count the instances of the Friend value by an expression in an unbound text box's ControlSource in the report footer, avoiding the function call:
=Sum(IIF([how_hear_about_us?]="Friend",1,0))
The IIF function will return a 1 if the value is Friend, zero otherwise. Summing the ones is the same as counting the instances of the Friend value.