1

我在 MS-Access 2003 中有以下查询,它工作正常:

SELECT tblDiscounts.DiscountID, tblDiscounts.DiscountPercent, tblDiscounts.DiscountName, tblDiscounts.DiscountDescription
FROM tblDiscounts, qryPropertyPeriodRate_Count_Nested
WHERE (tblDiscounts.DiscountID) = IIf ([qryPropertyPeriodRate_Count_Nested].[CountOfWeeks]=1,1,IIf([qryPropertyPeriodRate_Count_Nested].[CountOfWeeks]=2,2,IIf([qryPropertyPeriodRate_Count_Nested].[CountOfWeeks]=3,3,4)));

我希望用 Switch 功能替换 IIf 功能,但无论我尝试什么都行不通。我最好的方法如下:

SELECT tblDiscounts.DiscountID, tblDiscounts.DiscountPercent, tblDiscounts.DiscountName, tblDiscounts.DiscountDescription
FROM tblDiscounts, qryPropertyPeriodRate_Count_Nested
WHERE (((tblDiscounts.DiscountID)=SWITCH ([qryPropertyPeriodRate_Count_Nested].[CountOfWeeks]=1,1, [qryPropertyPeriodRate_Count_Nested].[CountOfWeeks]=2,2, [qryPropertyPeriodRate_Count_Nested].[CountOfWeeks]=3,3, [qryPropertyPeriodRate_Count_Nested].[CountOfWeeks]>3,4)));

但我收到一条消息

表达式中的类型不匹配

请指教!

4

1 回答 1

2

我可以看到的一个区别是,如果[qryPropertyPeriodRate_Count_Nested].[CountOfWeeks]<1嵌套IIf的 s 将返回4,而Switch语句将返回Null。检查您的基础数据,看看是否会发生这种情况;一个Null值很可能会弄乱 WHERE 子句。

于 2013-09-07T22:11:22.057 回答