Dans SSRS, pourquoi est-ce que je reçois l'erreur "l'élément avec la même clé a déjà été ajouté", Quand je fais un nouveau rapport?

Je reçois l'erreur suivante dans SSRS, et cela me déroute depuis un moment:

An error occurred while the query design method was being saved. 
An item with the same key has already been added

Qu'est-ce qu'un "item" désigne, cependant? J'ai même essayé d'éditer le RDL et de supprimer toutes les références à la procédure stockée que je dois utiliser appelée prc_RPT_Select_BI_Completes_Data_View.

Cela pourrait-il avoir à voir avec le fait que la procédure stockée utilise Dynamic SQL (la notation N')?

Le matin, dans la procédure stockée j'ai:

DÉFINIR @SQL += N' Sélectionnez bi.N ° de fournisseur comme "Identificateur de fournisseur" , bi.SupplierName comme "nom du fournisseur"

        ,bi.PID as ''PID''
        ,bi.RespondentID as ''Respondent ID''

        ,lk_slt.Name as ''Entry Link Type''

        ,ts.SurveyNumber as ''Initial Survey ID'''

entrez la description de l'image ici

53
demandé sur Coffee 2013-01-22 23:52:56

5 réponses

Il semble que SSRS ait un problème ( au moins dans la version 2008) - j'étudie ce site web qui l'explique

Où il est dit si vous avez deux colonnes (de 2 diff. tables) avec le même nom, alors cela causera ce problème.

De la source:

Sélectionnez A. Field1, A. Field2, A. Field3, B. Field1, B. field99 dans la TableA a JOIN TableB B sur A. Field1 = B. Field1

SQL l'a très bien géré, puisque j'avais préfixé chacun avec un alias (table des noms). Mais SSRS utilise uniquement le nom de la colonne comme clé, pas la table + colonne, donc il étouffait.

Le correctif était facile, soit renommer la deuxième colonne, c'est-à-dire B. Field1 comme Field01 ou simplement omettre le champ tous ensemble, ce que j'ai fait.

103
répondu Coffee 2014-05-15 20:53:19

J'ai l'expérience de ce problème dans le passé. Sur cette base, je peux dire que Généralement nous obtenons ce problème si votre jeu de données a plusieurs noms de champ qui pointent vers la même source de champ. Jetez un oeil dans les messages suivants pour la description de l'erreur de détail

Http://www.bi-rootdata.com/2012/09/an-error-occurred-during-report.html

Http://www.bi-rootdata.com/2012/09/an-item-with-same-key-has-already-been.html

Dans votre cas, vous devriez vérifier tous vos noms de champs renvoyé par Sp prc_RPT_Select_BI_Completes_Data_view et assurez-vous que tous les champs ont un nom unique.

6
répondu Aftab 2013-01-23 07:51:21

Je fais face au même problème. Après le débogage, j'ai corrigé la même chose. si le nom de la colonne dans votre requête sql a plusieurs fois ce problème se produire. Par conséquent, utilisez alias dans la requête sql pour différer le nom de la colonne. Ex: La requête ci-dessous fonctionnera correctement dans la requête sql mais créera un problème dans le rapport SSRS:

Sélectionner P.ID, P. prénom, P. nom de famille, D.ID, D. ville, D. Région, D. adresse De PersonalDetails P LEFT Join CommunicationDetails d On P.ID = D. PersonalDetailsID

Raison: ID a mentionné deux fois (Multiple Fois)

Requête Correcte:

Sélectionner P.ID comme PersonalDetailsID, P. FirstName, P. LastName, D.ID, D. ville, D. Région, D. adresse De PersonalDetails P LEFT Join CommunicationDetails d On P.ID = D. PersonalDetailsID

1
répondu Sanjay Kumar 2018-04-24 07:14:02

Je viens de recevoir cette erreur et j'ai appris qu'il s'agissait de l'alias de variable locale

À la fin de la procédure stockée, j'avais comme

select @localvariable1,@localvariable2

Cela fonctionnait bien dans sql mais quand j'ai couru ceci dans ssrs c'était toujours une erreur de lancer mais après avoir donné alias, il est corrigé

select @localvariable1 as A,@localvariable2 as B
0
répondu Naveen Bodapati 2017-06-06 14:55:58

J'ai eu la même erreur dans une requête de rapport. J'ai eu des colonnes de différentes tables avec le même nom et le préfixe pour chaque table (par exemple: select A. description, B. description, C. description) qui fonctionne bien dans Oracle, mais pour le rapport, vous devez avoir un alias unique pour chaque colonne, ajoutez simplement un alias aux champs avec le même nom (sélectionnez A. description a_description, B. description b_description]}

0
répondu Jorge Drot De Gourville 2018-08-09 17:37:03