Access中的案例expression式
你可以在Access中使用case
expression式吗? 我想确定最大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值的含义