Access中的案例expression式

你可以在Access中使用caseexpression式吗? 我想确定最大dateforms2列,但不断收到以下代码中的语法错误:

 CASE WHEN dbo_tbl_property.LASTSERVICEDATE > Contour_dates.[Last CP12 Date] THEN dbo_tbl_property.LASTSERVICEDATE ELSE Contour_dates.[Last CP12 Date] END AS MaxDate 

您可以使用IIF()函数。

 IIF(condition, valueiftrue, valueiffalse) 

condition是你想testing的价值。

valueiftrue是条件评估为TRUE时返回的值。

valueiffalse是条件评估为FALSE时返回的值。

Access中没有任何语句。 相反,你可以使用switch语句。 它看起来像下面这样:

switch(dbo_tbl_property.LASTSERVICEDATE > Contour_dates.[Last CP12 Date],dbo_tbl_property.LASTSERVICEDATE,dbo_tbl_property.LASTSERVICEDATE <= Contour_dates.[Last CP12 Date],Contour_dates.[Last CP12 Date])

有关进一步阅读,请参阅: http : //www.techonthenet.com/access/functions/advanced/switch.php

或者在VBA中的案例function实施例子:

http://ewbi.blogs.com/develops/2006/02/adding_case_to_.html

问候,J.

FWIW – IIF是一个拖动,并且切换解决scheme似乎不适用于SQL(我可能做错了什么)。 我将Fionnuala提供的值input到名为AccessObjectXref的新表中:

ID ObjectType ObjectDesc 1 -32768 Form 2 -32766 Macro 3 -32764 Report 4 -32761 Module 5 -32758 Users 6 -32757 DB Document 7 1表8 2 DB 9 3容器10 5查询11 8子数据表

然后使用以下SQL来创build对象名称及其计数的列表。 显然你可以包括每个logging,如果你想要的话:

 SELECT objectdesc, Count(*) AS Expr1 FROM msysobjects, AccessObjectTypeXref where type = objecttype group by objectdesc order by objectdesc 

我从中获得了对象types的列表: MsysObjects值的含义