Я создаю отчет (в Crystal Reports XI) на основе хранимой процедуры SQL в базе данных.Запрос принимает несколько параметров и возвращает записи в указанном диапазоне дат.Если параметры передаются, они используются для определения того, какие записи необходимо вернуть.Если один или несколько параметров не переданы, это поле не используется для ограничения типов возвращаемых записей.Это немного сложно, поэтому вот мое предложение WHERE:
WHERE ((Date > @start_date) AND (Date < @end_date))
AND (@EmployeeID IS NULL OR emp_id = @EmployeeID)
AND (@ClientID IS NULL OR client_id = @ClientID)
AND (@ProjectID IS NULL OR project_id = @ProjectID)
AND (@Group IS NULL OR group = @Group)
Теперь, для проблемы:
Запрос (и отчет) прекрасно работает для старых данных, в диапазоне 2000-2005.Тем не менее, предложение WHERE не фильтрует данные должным образом в течение последних лет: оно возвращает только записи, в которых параметр @Group имеет значение NULL (т. Е. Не передается).!