There is no SQL equivalent of the Access IIF function, and I'm pretty sure you would not be able to use it in an ADP. It's such a useful function it seems a major ommision from SQL Server.
The only alternative would be to write a SQL UDF. Another problem with this is that you cannot pass a boolean evaluation as a parameter. The closest I got was to create a series of UDFs called IIF_EQ, IIF_GT, IIF_GTE, etc. Here is my definition of the equality check (IIF_EQ) - it uses sql_variant parameters so you can use any data types.
CREATE FUNCTION dbo.[IIF_EQ] (@FirstValue as sql_variant, @SecondValue as sql_variant, @ValueIfTrue as sql_variant, @ValueIfFalse as sql_variant)
RETURNS sql_variant
AS
BEGIN
DECLARE @Result AS sql_variant
IF @FirstValue=@SecondValue SET @Result = @ValueIfTrue ELSE SET @Result = @ValueIfFalse
RETURN @Result
END
So using the UDF, you would want...
SELECT cfname + ' ' + CONVERT(varchar(2),dbo.IIF_EQ(cmi,Null,'',cmi + '.')) + ' ' + clname AS Expr1
In my experience with ADPs, you need the dbo. You need the CONVERT, as unfortunately you cannot concatenate a sql_variant even if it is a string.