From: louisjohnphillips on
On Jul 4, 1:08 pm, John Spencer <spen...(a)chpdm.umbc> wrote:
> I don't think you are correct. First, you can only nest 7 levels of IIF,
> so that is not a solution that will work for more than a few values.
>
> You can use the table solution and if you have indexes on the proper
> fields, it will be just as fast as any other method.
>
> '====================================================
>   John Spencer
>   Access MVP 2002-2005, 2007-2008
>   The Hilltop Institute
>   University of Maryland Baltimore County
> '====================================================
>
>
>
> louisjohnphill...(a)gmail.com wrote:
> > On Jul 4, 10:19 am, Duane Hookom <duanehookom(a)NO_SPAMhotmail.com>
> > wrote:
> >> I don't care for any solution that hard-codes data. Data belongs in your
> >> tables not in your code. Readhttp://weblogs.sqlteam.com/jeffs/archive/2006/02/10/9002.aspx.
>
> >> A small lookup table provides the greatest flexibility. Your table could
> >> have the min and max values with the appropriate code. My second choice would
> >> be to create a small user-defined function that accepts the value and returns
> >> the code. I wouldn't even consider using nested IIf()s or the Switch()
> >> function.
>
> >> --
> >> Duane Hookom
> >> Microsoft Access MVP
>
> >> "inungh" wrote:
> >>> I would like have a query or method to get most close value like
> >>> following:
> >>> Code       Value
> >>>   A+         95
> >>>   A           90
> >>>   A-          85
> >>> I would like to have the query return A+ if value is greater or equals
> >>> than 95 and return A when the value between 90 and 95.
> >>> Is it possible to have a query or any function to return most close
> >>> value code?
> >>> Your information is great appreciated,- Hide quoted text -
> >> - Show quoted text -
> > Duane:
>
> > You are correct.  A small lookup table provides the greatest
> > flexibility.  However, performing the lookup requires a join of the
> > tables.  If you have many, many students and few distinct grade
> > groupings, you should consider the iif().   It will provide you with
> > much better performance.- Hide quoted text -
>
> - Show quoted text -

John:

This is not worth discussing further.

I only wish to alert you that my version of Access allowed this SQL.
Therefore, no matter how silly the query is, the limit is not a
nesting of seven.


SELECT iif( Group_Member_Count > 13, '13 persons',
iif( Group_Member_Count > 12, '12 persons',
iif( Group_Member_Count > 11, '11 persons',
iif( Group_Member_Count > 10, '10 persons',
iif( Group_Member_Count > 9, '9 persons',
iif( Group_Member_Count > 8, '8 persons',
iif( Group_Member_Count > 7, '7 persons',
iif( Group_Member_Count > 6, '6 persons',
iif( Group_Member_Count > 5, '5 persons' ,
iif( Group_Member_Count > 4, '4 persons',
iif( Group_Member_Count > 3, '3 persons',
iif( Group_Member_Count > 2, '2 persons',
iif( Group_Member_Count > 1, '1 persons'
) ) ) ) ) ) ) ) ) ) ) ) )
FROM Groups