web-dev-qa-db-fra.com

Dans SSRS, pourquoi l'erreur "Un élément avec la même clé a déjà été ajouté" apparaît-elle lorsque je crée un nouveau rapport?

Je reçois l'erreur suivante dans SSRS, et cela me laisse perplexe depuis un moment:

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

Que signifie un "élément", cependant? J'ai même essayé d'éditer RDL et de supprimer toutes les références à la procédure stockée que je dois utiliser, appelées prc_RPT_Select_BI_Completes_Data_View.

Est-ce que cela pourrait avoir à voir avec le fait que la procédure stockée utilise le SQL dynamique (la notation N')?

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

SET @SQL + = N 'SELECT bi.SupplierID as' 'Supplier ID' ', bi.SupplierName as' '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'''

enter image description here

60
Coffee

Il semble que SSRS ait un problème (du moins dans la version 2008) - J'étudie ce site Web l'explique

Où il est dit que si vous avez deux colonnes (à partir de 2 tables diff.) Portant le même nom, alors le problème se produira.

De source:

SELECT a.Field1, a.Field2, a.Field3, b.Field1, b.field99 FROM TableA a JOIN TableB b sur a.Field1 = b.Field1

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

La solution était simple: renommez la deuxième colonne, c’est-à-dire b.Field1 AS Field01 ou omettez tout simplement le champ, ce que j’ai fait.

116
Coffee

J'ai expérimenté ce problème dans le passé. Sur la base de cela, je peux dire que ce problème est généralement rencontré si votre jeu de données comporte plusieurs noms de champs pointant vers la même source de champ. Jetez un coup d'œil aux articles suivants pour une description détaillée de l'erreur

http://www.bi-rootdata.com/2012/09/an-error-occowed-during-report.html

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

Dans votre cas, vous devez vérifier tous les noms de champs renvoyés par Sp prc_RPT_Select_BI_Completes_Data_View et vous assurer que tous les champs ont un nom unique.

6
Aftab Ansari

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

Sélectionnez P.ID, P.Prenom, P.LastName, D.ID, D.Ville, D.Area, D.Adresse depuis PersonalDetails P à gauche Joindre CommunicationDetails D sur P.ID = D.PersonalDetailsID.

Raison: ID a mentionné deux fois (plusieurs fois)

Requête correcte:

Sélectionnez P.ID en tant que PersonalDetailsID, P.FirstName, P.LastName, D.ID, D.City, D.Area, D.Address De PersonalDetails P à gauche Joindre CommunicationDetails D Sur P.ID = D.PersonalDetailsID

3
Sanjay Kumar

J'ai eu la même erreur dans une requête de rapport. J'avais des colonnes de différentes tables portant le même nom et le préfixe de chaque table (par exemple, sélectionnez a.description, b.description, c.description) qui fonctionne correctement dans Oracle, mais vous devez disposer d'un alias unique pour chaque rapport. colonne, ajoutez simplement un alias aux champs du même nom (sélectionnez a.description a_description, b.description b_description, etc.)

Je viens de recevoir cette erreur et je suis venu pour savoir qu'il est à propos de la variable locale alias

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

select @localvariable1,@localvariable2

cela fonctionnait bien en sql mais quand j'ai couru ceci en SSRS il jetait toujours l'erreur mais après que j'ai donné alias c'est réparé

select @localvariable1 as A,@localvariable2 as B
0
Naveen Bodapati