Ho un rapporto SSRS che ha 3 set di dati che alimentano una fonte di dati. Il set di dati principale è una procedura memorizzata che sta aggregando alcuni dati in base a una serie di parametri alimentati dagli altri due set di dati.
La principale procedura memorizzata che alimenta questo rapporto ha 4 parametri. Uno è un ID per il tipo di dati, due sono per le date di inizio e fine e il terzo è solo un parametro flag. Il parametro flag è il parametro multivalore in cui desidero passare più valori flag che sono anche valori VARCHAR.
Nella mia procedura memorizzata per il mio parametro @Flag, ho il comune:
WHERE [Flag] IN (@Flag)
Quindi, naturalmente, il parametro @Flag nel report SSRS impostato per consentire "Valori multipli" che vengono anche popolati da una query che sta estraendo quei valori @Flag da una tabella di dimensioni.
Il mio problema
Nella maggior parte dei casi quando si ha a che fare con i valori INT, utilizzare la stessa tecnica funziona. Tuttavia, quando ho a che fare con i valori dei personaggi, fallisce. Se scelgo una bandiera, il rapporto funziona magicamente. Se seleziono più di un flag, non sembra passare correttamente i flag alla procedura memorizzata e non vengono restituiti risultati.
Durante il test del flag multi-valore direttamente nella procedura memorizzata:
WHERE [Flag] IN ('A', 'B', 'C')
La procedura memorizzata funziona correttamente. Quindi il problema non è la procedura memorizzata, ma il modo in cui SSRS sta passando i valori multivalore al parametro @Flag.
Soluzioni provate
Ho provato a fare le seguenti modifiche al set di dati SSRS per questi parametri @Flag:
=join(Parameters!<your param name>.Value,",")
E anche questo:
=SPLIT(JOIN(Parameters!<your param name>.Value,","),",")
Funzionano tutti su valori singoli, ma mai su più valori.
Cosa mi sto perdendo qui?
=join(Parameters!<your param name>.Value,",")
) può essere aggiunta al set di dati leggendo il parametro, nella scheda "Parametri": c'è un pulsante "fx" per aggiungere espressioni, a destra della goccia "Valore parametro" -giù.