Crystal Reports - превратить параметр «Месяц и год» в начальную и конечную дату для предложения Command WHERE - PullRequest
0 голосов
/ 21 января 2020

Мне нужно создать параметры месяца и года в Crystal Reports и перевести их в начальную и конечную даты для предложения Command WHERE. Я не могу использовать Select Expert с формулами, потому что отчет извлекает много данных, поэтому вместо этого мне нужно ограничить данные, прежде чем я их перенесу в CR.

У меня есть это SQL утверждение, которое работает для преобразование месяца и года varchar в даты начала и окончания:

DECLARE @month varchar(2)
DECLARE @year varchar(4)

set @month= '12'
set @year= '2019'

select 
CAST(cast(@year + '-' + Cast(cast(@month as int) as varchar(20)) + '-01' as datetime) as DATE) as StartDate
,DATEADD(dd, -DAY(DATEADD(mm, 1, cast(@year + '-' + @month + '-01' as date))), DATEADD(mm, 1, cast(@year + '-' + @month + '-01' as date))) as EndDate

Моя команда CR будет выглядеть примерно так:

select * from Table1 where Date between StartDate and EndDate

Проблема в том, что я не могу понять, как создать параметры в CR, чтобы сделать эту работу. Когда я создаю их как строковые типы данных, я получаю сообщение об ошибке:

enter image description here

Я не могу позволить пользователям вводить даты начала и окончания, требуются месяц и год !

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 21 января 2020

Ответ, который мне помог, состоял в том, чтобы взять параметры числа Кристалла и преобразовать их в переменные varchar SQL. Параметры CR: «{? Month}» и «{? Year} ниже.

declare
@StartDate datetime,
@EndDate datetime

set @StartDate = cast(cast({?year} as varchar(4)) + '-' + cast({?month} as varchar(2)) + '-01' as date) 
set @EndDate = DATEADD(dd, -DAY(DATEADD(mm, 1, cast(cast({?year} as varchar(4)) + '-' + cast({?month} as varchar(2)) + '-01' as date))), DATEADD(mm, 1, cast(cast({?year} as varchar(4)) + '-' + cast({?month} as varchar(2)) + '-01' as date)))

select * from Table1 where Date bewteen @StartDate and @EndDate
...