2009-12-01 17 views
8

Rieccomi con un'altra domanda SSRS :-)SSRS Row Group + Colonna Gruppo = RowNumber Problema

ho a che fare con i dati dell'indagine. Ho una procedura che restituisce i conteggi delle risposte di un'organizzazione per domanda. Quindi il mio rapporto è definito come Raggruppa in Organizzazione per riga e Raggruppa in risposta per colonne. Sia il numero di organizzazioni che le risposte sono variabili. Funziona come previsto. Ho provato ad aggiungere un RowCount accanto all'organizzazione in modo che possa mostrare il rango, ma il fatto che ogni organizzazione abbia una riga per domanda significa che ottengo otto righe per ogni organizzazione.

Ecco un esempio:
Chart

Qui è la mia definizione del report:
Chart
L'espressione rango è attualmente: =RowNumber(Nothing)

Idealmente, il rango sarebbe 1, 2, 3, 4 , ecc ... Ho provato l'ambito per il gruppo di righe, il gruppo di colonne e niente. Nessun aiuto.

Qualsiasi assistenza sarebbe molto apprezzata!

risposta

1

Mi sembra di aver trovato una soluzione, ma sembra un trucco ... Sto lasciando questo senza risposta per vedere se qualcun altro può fornire una soluzione migliore (leggi meno hacker).

La mia posizione è ora Espressione:
=RowNumber(Nothing)/Count(Fields!AnswerText.Value)

Tutto sembra essere ok. Suppongo che dovrei IIf (Count ... = 0, poi RowNumber, altrimenti quello che ho ...

+0

Con nient'altro che mostra, questo approccio funziona anche se sembra un trucco. Per me, se sta visualizzando dati aggregati, dovrebbe RowNumber sul totale NON i dati non elaborati ... –

+0

Nota: questa soluzione funziona solo quando ogni gruppo contiene lo stesso numero di record di dettaglio. – Dan

0

La cosa migliore da fare qui, è la colonna Rango pari a = RowCount()/8

Dal momento che il sicuro ogni riga visibile contiene un totale di 8 righe, questo dovrebbe funzionare bene.

+0

Jon, grazie per la risposta. Il problema è che ho dimenticato di menzionare che il numero di risposte è variabile ... Ho dimenticato di menzionare che ... –

0

Aggiungi un'altra colonna di rango accanto a quella esistente e inserisci un'altra espressione in quella che prende il valore di rango (numero di righe?) E dividila per 8. Quindi rendere invisibile la colonna di rango precedente.

0

Sei assolutamente certo che l'uso RowNumber("NameOfOrganizationGroup") non funziona?

Clicca sulla matrice, fai clic sulla casella di selezione dell'angolo superiore sinistro per selezionare l'intera cosa, quindi fai clic con il pulsante destro del mouse sul bordo della selezione e ottieni le proprietà. Passa alla scheda Gruppi e guarda i nomi dei gruppi nella sezione Righe. l'ambito della funzione RowNumber()

Se già lo conosci e lo hai provato, le mie scuse-non volevo presumere che non lo sapessi. Non è solo il 100% chiaro dal tuo affermare che questa non è la soluzione.

2

utilizzare:

runningvalue(Fields!AnswerText.Value,CountDistinct,"NameOfOrganizationGroup") 

Se la sua matrice, cambiate il nome dell'ambito dall'ambito riga alla portata matrice.

24

Aveva lo stesso problema frustrante; un sacco di tempo sprecato.Alla fine, questa soluzione anche aiutato:

=RunningValue(CountDistinct("YourTableName"),Count,"YourTableName") 

trucco qui non è quello di utilizzare il nome del gruppo all'interno della tabella/matrice, ma il nome della tabella stessa. E sì, si potrebbe pensare che usare il nome della tabella per l'ambito nella funzione RowNumber dovrebbe funzionare, ma non è così.

+0

Grazie, questo ha risolto un problema che ha fatto il mio dado per giorni. –

+0

+1 per questo .. questo ha aiutato a fare meraviglie !! il nome della tabella per me è il nome di DataSet – Irfan

+0

Penso che dovremmo inserire DataSetName invece di "" YourTableName "' - quindi sarebbe qualcosa come '= RunningValue (CountDistinct (" YourTableName "), Count," YourDataSetName ")' – pedram

2

Faccio con codice personalizzato.

aggiungere questo alla sezione di codice sul rapporto di configurazione:

Dim private count as integer = 0 
Dim private iniRow as integer = 0 
Public function nroFila(Byval rowNum as integer) as integer 
    if iniRow = 0 then 
     iniRow = rowNum 
    end if 

    if rowNum = iniRow then 
     count = 0 
    end if 

    count = count + 1 
    Return count 
End function 

Poi, chiamare la funzione in una cella all'interno del gruppo:

=Code.nroFila(RowNumber(Nothing))