sql >> Database >  >> RDS >> Sqlserver

SSRS toont geen records in het rapport, maar de zoekopdracht levert resultaten op

Ik zal een gok nemen en zeggen dat het is 'hoe' u de parameter met meerdere waarden doorgeeft. Persoonlijk gebruik ik bij het omgaan met SSRS weergaven, tabelfuncties of gewoon selecteren, aangezien SSRS van nature kan begrijpen dat dit:

Where thing in (@Thing)

Betekent dit eigenlijk in SSMS:

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

Ik vermoed dat je proc een string gebruikt die eigenlijk een door komma's gescheiden array is. Wanneer u een parameter doet die een stringarray heeft zoals '1,2,3,4' en u de procedure aanpakt met zoiets als een 'Tekst'-parameter die meerdere waarden accepteert die u opgeeft of uit een query haalt, moet u in wezen ' Voeg de parameters samen als uw procedure een waarde aanneemt van een tekenreeks die de array bevat. EG:Proc genaamd dbo.test wordt uitgevoerd om rijen te retourneren voor waarden 1,2,4 voor een parameter-id's worden weergegeven als:

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

Als ik de proc in SSRS met deze waarde wilde uitvoeren en ik had een parameter met meerdere waarden genaamd 'IDS', dan zou ik de array handmatig moeten samenstellen in een functie in SSRS zoals:

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

In wezen vertelt de proc een parameter 'IDS' uit te voeren door de meerdere waarden samen te voegen in een reeks door komma's gescheiden waarden. U doet dit in de dataset in het linkerdeelvenster waar het 'Parameters' vermeldt in plaats van de parameter op te geven zoals het is zoals [@IDS] u klikt in plaats daarvan op 'Fx' en voert u de bovenstaande functie in.

Om deze reden ben ik een groot voorstander van weergaven, selecties en tabelfuncties, omdat je hiervoor de predikaatlogica kunt gebruiken.



  1. Een aangepaste optie instellen in een opgeslagen procedure

  2. PostgreSQL-equivalent voor MySQL GROUP BY

  3. Hoe u elke N-de rij in MySQL kunt krijgen

  4. PHP-tijd sinds functiefout