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