And*_*y K 10 sql sql-server reporting-services
我@Destinataire在SSRS中有一个参数,它有一个值列表加一个空字符串
我创建了一个我设置为可用值的查询,它给出了下拉列表
SELECT code_name FROM tableA UNION ALL SELECT ''
Run Code Online (Sandbox Code Playgroud)
使用空字符串运行报表时,我没有结果
我试图将参数设置为文本框,它也没有做任何事情
然而,在运行我用来运行此报告的SQL查询时,事情很好,因为我检索了所有行(请参阅下面的查询)
DECLARE @DateCmt DATE = '05/09/2015',
@DateFin DATE = '05/09/2016',
@Restriction INT = 1,
@Destinataire VARCHAR(5) = ''
--
;
--SELECT @DateCmt,@DateFin
SELECT DISTINCT
CFE_EDI.IU_LIASSE
,CFE_EDI.ETAT
,CFE_EDI.DATHRMAJ -- nouveau
,CFE_EDI.ESP_APPLI
,CFE_EDI.NOM_RS
,PARTENAIRES.LIBEL
,PARTENAIRES.CODE_INSEE
,CFE_EDI.DATHR_ENV -- nouveau
,CFE_EDI.DATHR_MEF -- nouveau
,CFE_EDI.DATHR_PRE -- nouveau
,CFE_EDI.DATHR_OUV -- nouveau
--,CFE_EDI.DATEHR_DEPOT-- mettre l'heure
,CFE_EDI.GESTDEL
--,CFE_SERVICE_DEST.IU_DEST
--,CFE_SERVICE.IU_LIASSE
,CASE WHEN CFE_EDI.ETAT = 'MEF' THEN 'En Attente le'
WHEN CFE_EDI.ETAT = 'PRE' THEN 'Préparé le'
WHEN CFE_EDI.ETAT = 'ENV' THEN 'Envoyé le'
WHEN CFE_EDI.ETAT = 'OUV' THEN 'Réceptionné le'
WHEN CFE_EDI.ETAT = 'NRM' THEN 'Non remis le'
WHEN CFE_EDI.ETAT = 'NAQ' THEN 'Non acquitté le'
END AS ChampEtat
,CASE WHEN CFE_EDI.ETAT = 'OUV' THEN 'Date d''envoi : ' + CONVERT(VARCHAR,CFE_EDI.DATHR_ENV,103)
END AS Date_Envoi,
CASE
WHEN CFE_EDI.ETAT='MEF' THEN CONVERT(VARCHAR,CFE_EDI.DATHR_MEF,103)
WHEN CFE_EDI.ETAT='PRE' THEN CONVERT(VARCHAR,CFE_EDI.DATHR_PRE,103)
WHEN CFE_EDI.ETAT='ENV' THEN CONVERT(VARCHAR,CFE_EDI.DATHR_ENV,103)
WHEN CFE_EDI.ETAT='OUV' THEN CONVERT(VARCHAR,CFE_EDI.DATHR_OUV,103)
ELSE CONVERT(VARCHAR,CFE_EDI.DATHR_DEPOT,103) END AS DateMaj ,
CASE
WHEN CFE_EDI.ETAT='MEF' then CONVERT(VARCHAR,CFE_EDI.DATHR_MEF,108)
WHEN CFE_EDI.ETAT='PRE' then CONVERT(VARCHAR,CFE_EDI.DATHR_PRE,108)
WHEN CFE_EDI.ETAT='ENV' then CONVERT(VARCHAR,CFE_EDI.DATHR_ENV,108)
WHEN CFE_EDI.ETAT='OUV' then CONVERT(VARCHAR,CFE_EDI.DATHR_OUV,108)
ELSE CONVERT(VARCHAR,CFE_EDI.DATHR_DEPOT,108) END AS HeureMaj,
PARTENAIRES.LIBEL + '(' + CFE_EDI.CODE_INSEE + ')' AS LibelDestinataire
--,CASE WHEN @Restriction = 1 THEN '1'
-- WHEN @Restriction = 0 THEN '0' END AS Restriction
,CASE WHEN @DateCmt != @DateFin AND @DateCmt < @DateFin THEN 'Diffusion Xml du ' + CONVERT(VARCHAR,(@DateCmt),103) + ' au ' + CONVERT(VARCHAR,(@DateFin),103) ELSE
'Diffusion EDI Xml du ' + CONVERT(VARCHAR,@DateCmt,103) END AS Plage_Diffusion
-- INTO
FROM
(PARTENAIRES
INNER JOIN dbo.CFE_EDI ON PARTENAIRES.CODE_INSEE = CFE_EDI.CODE_INSEE)
INNER JOIN dbo.CFE_SERVICE ON CFE_EDI.IU_LIASSE = CFE_SERVICE.IU_LIASSE
INNER JOIN dbo.CFE_SERVICE_DEST ON (PARTENAIRES.IU_PART = CFE_SERVICE_DEST.IU_PART_CFE)
WHERE
case when @Restriction = 1
then case when CFE_EDI.ETAT in('ENV','OUV') then 1 else 0 end
when @Restriction = 0
then case when CFE_EDI.ETAT not in('ENV','OUV') then 1 else 0 end
else case when CFE_EDI.ETAT <> '' then 1 else 0 end
end = 1
AND
CFE_EDI.CODE_INSEE IS NOT NULL AND CFE_EDI.CODE_INSEE != ''
AND CASE --WHEN CFE_EDI.CODE_INSEE IS NOT NULL AND CFE_EDI.CODE_INSEE !=''
--THEN CASE
WHEN @Destinataire != '' AND (@Destinataire) IS NOT NULL
THEN CASE WHEN CFE_EDI.CODE_INSEE = @Destinataire THEN 1 ELSE 0 END
ELSE CASE WHEN CFE_EDI.CODE_INSEE = PARTENAIRES.CODE_INSEE
AND cfe_edi.dathrmaj > @DateCmt AND cfe_edi.dathrmaj < @DateFin
AND CFE_EDI.GESTDEL = '1' THEN 1 ELSE 0 END
END = 1
Run Code Online (Sandbox Code Playgroud)
第一个问题是要知道是否有办法设置参数而不使用我的愚蠢技巧.
第二个问题是为什么带有空字符串的参数的查询可以解决这个问题,一旦你使用SSRS,什么都没有.
在此先感谢您的帮助
更新我尝试设置WHEN LEN(@Destinataire) > 0与@Destinataire = ''上一个,但没有运气.
更新2我现在的目标是有一个解决方案,将检索所有数据,如果@Destinataire等于''或NULL.但是,考虑到这一点,此解决方案相当于填充了所有值@Destinataire.我会说,不管怎样.
最后更新我从头开始重新创建了一切哦!魔术,分组或一切选项按照愿望工作.我仍然不知道出了什么问题,但我对结果很满意.非常感谢您的帮助和支持.
查看您的查询以及传递 @Destinataire 的位置,您应该能够根据 where 子句传递 null 值,并获得与传递 '' 相同的效果
CASE --WHEN CFE_EDI.CODE_INSEE IS NOT NULL AND CFE_EDI.CODE_INSEE !=''
--THEN CASE
WHEN @Destinataire != '' AND (@Destinataire) IS NOT NULL
THEN CASE WHEN CFE_EDI.CODE_INSEE = @Destinataire THEN 1 ELSE 0 END
ELSE CASE WHEN CFE_EDI.CODE_INSEE = PARTENAIRES.CODE_INSEE
AND cfe_edi.dathrmaj > @DateCmt AND cfe_edi.dathrmaj < @DateFin
AND CFE_EDI.GESTDEL = '1' THEN 1 ELSE 0 END
END = 1
Run Code Online (Sandbox Code Playgroud)
我会尝试仅设置该特定参数以允许 ssrs 报告中存在空值,该报告可以作为参数设置窗口中的复选框找到。
| 归档时间: |
|
| 查看次数: |
2166 次 |
| 最近记录: |