sql >> Databáze >  >> RDS >> Sqlserver

SSRS nezobrazuje v sestavě žádné záznamy, ale dotaz vrací výsledky

Budu hádat a řeknu, že je to „jak“ předáváte parametr s více hodnotami. Osobně při práci s SSRS používám pohledy, tabulkové funkce nebo jen výběry, protože SSRS dokáže nativně pochopit, že toto:

Where thing in (@Thing)

Ve skutečnosti to znamená v SSMS:

Where thing in (@Thing.Value1, @Thing.Value2, @Thing.Value3, etc...)

Hádám, že váš proc bere řetězec, který je ve skutečnosti polem odděleným čárkami. Když uděláte parametr, který přebírá pole řetězců jako '1,2,3,4' a řešíte proceduru něčím jako 'Text' parametr akceptující více hodnot, které buď zadáte, nebo získáte z dotazu, který v podstatě potřebujete ' Připojte parametry, pokud vaše procedura přebírá hodnotu řetězce, který obsahuje pole. EG:Proc nazvaný dbo.test se spustí, aby vrátil řádky pro hodnoty 1,2,4 pro parametr, ID jsou zobrazena takto:

exec dbo.test @ids = '1,2,4'

Pokud bych chtěl spustit proc v SSRS s touto hodnotou a měl bych vícehodnotový parametr nazvaný 'IDS', musel bych sestavit pole ručně ve funkci v SSRS jako:

=JOIN(Parameters!IDS.Value, ",")

V podstatě řečeno procesu spuštění parametru 'IDS' spojením více hodnot v řetězci hodnot oddělených čárkou. Uděláte to v datové sadě v levém podokně, kde jsou uvedeny 'Parametry' místo zadání parametru, protože je to jako [@IDS], místo toho kliknete na 'Fx' a vložíte funkci výše.

Z tohoto důvodu jsem velkým zastáncem pohledů, výběrů a tabulkových funkcí, protože se o to můžete postarat pomocí predikátové logiky.



  1. Jak používat FILEPROPERTY() v SQL Server

  2. ORA-01795:maximální počet výrazů v seznamu je 1000 , jak rozdělit řetězec

  3. Jak zadat znak nového řádku v Oracle?

  4. Jak vytvořit index v SQL pro zvýšení výkonu