Я создаю отчет (в 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 (т. е. не передается).
Любые подсказки, советы или выводы приветствуются!