Я не уверен, что вам нужен VBA для sh этого. Я бы сделал это следующим образом.
Создайте отчет.
Добавьте 2 параметра StartDate
и EndDate
Затем я бы создал набор данных вроде (взято из sam, [база данных le adventureworks)
SELECT CustomerID, OrderDate, SubTotal
FROM Sales.SalesOrderHeader
WHERE (SubTotal < 100) -- just to reduce the sample data
and
(
(OrderDate >= @StartDate OR @StartDate IS NULL)
AND
(OrderDate <= @EndDate OR @EndDate IS NULL)
)
Будет использоваться указанная дата или NULL
, мы будем использовать первую или последнюю найденную запись.
Тогда для заполнителей заполнитель [Начало] будет выглядеть примерно так.
=IIF(
Parameters!StartDate.Value=Nothing
,First(Fields!OrderDate.Value, "DataSet1")
, Parameters!StartDate.Value
)
и аналогично заполнителю [Конец]
=IIF(
Parameters!EndDate.Value=Nothing
,Last(Fields!OrderDate.Value, "DataSet1")
, Parameters!EndDate.Value
)
Это либо покажет выбранный параметр начальной даты или первая найденная запись, если не был указан параметр, и то же самое для конечной даты, за исключением того, что будет отображаться последняя найденная запись.
Наконец, я отформатировал заполнители, чтобы они отображались как длинные даты.
Результаты выглядят следующим образом, без выбора ни одного, одного или обоих параметров.
(фактические данные по-прежнему отображается до 30 июня 2014 г.) Мы как Дата первого и последнего заказа для всего набора данных, поскольку не были указаны параметры.
Здесь дата первого заказа после 20 мая 2011 г. - 1 июля, но дата параметра отображается как то, что выбрал пользователь
Наконец, даты параметров отображаются в обоих заполнителях, даже если данные не расширяют это насколько это то, что выбрал пользователь.