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'''
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.
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.
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
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
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]}