2009-12-01 8 views
8

Je suis de retour avec une autre question SSRS :-)SSRS Ligne Groupe + Colonne Groupe = RowNumber Problème

je traite des données d'enquête. J'ai une procédure qui renvoie le nombre de réponses d'une organisation par question. Mon rapport est donc défini comme Groupe sur Organisation pour ligne et Groupe sur réponse pour colonnes. Le nombre d'organisations et les réponses sont variables. Cela fonctionne comme prévu. J'ai essayé d'ajouter un RowCount à côté de l'organisation afin que je puisse montrer le rang, mais le fait que chaque organisation ait une ligne par question signifie que je reçois huit lignes par organisation.

Voici un exemple:
Chart

Voici ma définition du rapport:
Chart
L'expression de rang est actuellement: =RowNumber(Nothing)

Idéalement, le rang serait 1, 2, 3, 4 , etc ... J'ai essayé la portée du groupe de lignes, du groupe de colonnes et de rien. Pas d'aide.

Toute aide serait grandement appréciée!

Répondre

1

Je semble avoir trouvé une solution, mais il se sent comme un hack ... Je laisse ce sans réponse pour voir si quelqu'un d'autre peut fournir une meilleure solution (lire moins hackish).

Mon rang est maintenant Expression:
=RowNumber(Nothing)/Count(Fields!AnswerText.Value)

Tout semble être ok. Je suppose que je devrais IIf (comte ... = 0, RowNumber, sinon ce que j'ai ...

+0

Avec rien d'autre apparaissant, cette approche fonctionne même si elle semble être un hack. Pour moi, s'il affiche des données agrégées, il devrait RowNumber sur l'agrégat PAS les données brutes ... –

+0

Note: Cette solution ne fonctionne que lorsque chaque groupe contient le même nombre d'enregistrements de détails. – Dan

0

La meilleure chose à faire ici, est faire la colonne de rang égal à = RowCount()/8

Depuis votre que chaque ligne visible contient un total de 8 lignes, cela fonctionne bien.

+0

Jon, merci pour la réponse. Le problème est que j'ai oublié de mentionner que le nombre de réponses est variable ... J'ai négligé de mentionner que ... –

0

Ajouter une autre colonne de rang à côté de celle existante et mettre une autre expression dans celle qui prend la valeur du rang (rowcount?) Et la diviser par 8. Puis rendre la colonne de l'ancien rang invisible.

0

Êtes-vous absolument certain que l'utilisation RowNumber("NameOfOrganizationGroup") ne fonctionne pas?

Cliquez sur la matrice, cliquez sur la case de sélection dans l'angle supérieur gauche pour sélectionner l'élément entier, puis cliquez avec le bouton droit sur la bordure de sélection et obtenez les propriétés.Activez l'onglet Groupes et examinez les noms des groupes dans la section Lignes. la portée de la fonction RowNumber()

Si vous le savez déjà et que vous l'avez essayé, mes excuses, je ne voulais pas supposer que vous ne le saviez pas. estion que ce n'est pas la solution.

2

Essayez d'utiliser:

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

Si sa matrice, changer le nom de la portée du champ d'application de la ligne à la portée de la matrice.

24

Avait le même problème frustrant; beaucoup de temps perdu.Finalement, cette solution a également aidé:

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

Trick ici est de ne pas utiliser le nom du groupe dans la table/matrice, mais le nom de la table elle-même. Et oui, on pourrait penser que l'utilisation du nom de la table pour la portée dans la fonction RowNumber devrait fonctionner, mais ce n'est pas le cas.

+0

Merci, cela a réglé un problème qui a été ma noix pendant des jours. –

+0

+1 pour cela .. cela a aidé à faire des merveilles !! le nom de la table pour moi est le nom de DataSet – Irfan

+0

Je pense que nous devrions entrer DataSetName au lieu de '" YourTableName "' - donc ce serait quelque chose comme '= RunningValue (CountDistinct (" YourTableName "), Count," YourDataSetName ")' – pedram

2

Je fais avec le code personnalisé.

Ajouter ce à la section de code sur config du rapport:

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 

Ensuite, appelez la fonction dans une cellule à l'intérieur du groupe:

=Code.nroFila(RowNumber(Nothing)) 
Questions connexes