IIf Функция, основанная на пользовательских параметрах - PullRequest
1 голос
/ 17 апреля 2011

Я пытаюсь разработать запрос на основе параметров, введенных в форму.Я хочу убедиться, что запрос все еще будет работать, даже если пользователь решит не вводить параметры (например, дата начала и окончания) или если пользователь вводит только половину параметров (например, пользователь вводит только начало, но не дату окончания иликонец, но не дата начала).Это то, что я хочу:

Если начальная и конечная даты равны нулю, вернуть все даты,

else, Если начальная дата равна нулю, то возвращаемые даты меньше или равны заданномудата окончания,

else, если дата окончания равна нулю, тогда даты возврата больше или равны заданной дате начала,

else, вернуть все даты между данной датой начала и окончания

То, что я придумал, похоже, не оценивается за пределами первого истинного утверждения, и я не уверен, почему.

IIf(IsNull([forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_Start_Date]
And [forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_End_Date]),  
[Volunteer_Date],  

IIf(IsNull([forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_Start_Date]),  
<= [forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_End_Date],  

IIf(IsNull([forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_End_Date]),  
>= [forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_Start_Date],  

(Between [forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_Start_Date] 
And [forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_End_Date]))))

1 Ответ

0 голосов
/ 18 апреля 2011

Понял!

WHERE (IIf(IsNull([Forms]![Volunteer_Hours_By_Person]!      [Volunteer_Hours_By_Person_Name_Selection]),(People.PID) like "*",(People.PID)=[Forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_Name_Selection]))

AND (IIf(IsNull([forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_Start_Date]) AND IsNull([forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_End_Date]),(Volunteer.Volunteer_Date) like "*",([Volunteer].[Volunteer_Date]) Between [forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_Start_Date] And [forms]![Volunteer_Hours_By_Person]![Volunteer_Hours_By_Person_End_Date]))
...