Dans les requêtes SQL pour mes jeux de données de services d'établissement de rapports, je voudrais être en mesure d'utiliser le modèle suivant:Utilisez une valeur conditionnelle dans un ensemble de données Reporting Services pour le débogage
-- Used to enable/disable diagnostic statements
declare @DEBUG bit
set @DEBUG = 0
-- Get current date/time.
declare @now datetime; set @now = getdate()
if @DEBUG = 1 select @now as now
-- Create a table to contain the chart values for the last 30 days.
declare @reportValues table
(
reportDate datetime,
x int
)
-- Populate the table with the last 30 days.
declare @counter int; set @counter = 0
while @counter < 5
begin
insert into @reportValues select dateadd(day, [email protected], @now), @counter
set @counter = @counter + 1
end
if @DEBUG = 1 select * from @reportValues
select sum(x) as total from @reportValues
Le problème est, Reporting Services ignore les instructions IF et "select @now as now" pour les valeurs du rapport, au lieu de la requête principale.
Existe-t-il un moyen d'accomplir ce modèle qui contourne cette limitation RS?
Mise à jour: Si vous allez à "SET FMTONLY" help page on the MSDN, quelqu'un a déjà noté ce problème dans un commentaire au bas de la page, et que la désactivation de cette option résout ce problème.
Vérifiez ma modification et voir si cela vous aide plus. – TheTXI
Si je change la valeur ci-dessus en "si @DEBUG = 1 print @now" alors cette partie est corrigée et l'instruction "if @DEBUG = 1 select * from @reportValues" provoque le problème. Heureusement, la plupart du temps, je veux voir des valeurs scalaires et non des tableaux. Cependant, il serait pratique d'imprimer les valeurs d'une table temporaire. –
Merci à Peter de souligner que mettre "SET FMTONLY OFF" en haut de la requête résout ce problème. Je n'ai jamais entendu parler de cette option avant! –