J'a provoqué une erreur BDC cette semaine qui se manifeste sur l'interface utilisateur et en le 12 journal de la ruche lors de l'exécution.
Première, Cela apparaît dans l'interface utilisateur:
Impossible de trouver les champs à insérer toutes les valeurs d'identificateur pour exécuter correctement une SpecificFinder MethodInstance avec nom … S'assurer que les paramètres d'entrée comportent des TypeDescriptors associés à chaque identificateur défini pour cette entité.
Voici une capture d'écran:
Je pourrais également provoquer ce message d'apparaître dans la 12 journal de la ruche à sera (à l'aide de mon high-tech-don't-try-this-at-home breveté « erreurs mystérieuses" méthode):
11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C données de SharePoint Portal Server Business 6q4x haute Exception dans BusinessDataWebPart.OnPreRender: System.InvalidOperationException: La valeur de l'identificateur ”, de Type ”, n'est pas valide. Valeur de l'identificateur attendu de Type « System.String ». à Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objet[] subIdentifierValues, LobSystemInstance lobSystemInstance) à Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entité de l'entité, Objet[] userValues, LobSystemInstance lobSystemInstance) à Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vue desiredView) à Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() à Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()
J'ai cherché et trouvé quelques pistes dans la Forum MSDN, mais ils n'étaient pas assez pour me faire comprendre ce que je faisais mal. J'ai regardé un webcast par Ted Pattison que mon société a aperçut de loin sur un serveur et est venu se rendre compte de mon problème.
Dans mon fichier ADF, Je me connecte à une base de données SQL comme indiqué:
<Propriété Nom="RdbCommandText" Type="System.String">
<![CDATA[
SÉLECTIONNEZ SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
PAYS, ADRESSE1, ADRESSE2, ADDRESS3, ADDRESS4, VILLE, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
COMTÉ DE, ÉTAT, POSTAL, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TÉLÉPHONE, EXTENSION, TÉLÉCOPIEUR, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
INTERLINK_DLL, TMS_EXCLUDE_FLG de dbo.PS_CARRIER_ID_VW avec (NOLOCK)
OÙ
(SETID <> « ACTION ») et
(plus bas(CARRIER_ID) >= plus faible(@MinId)) et
(plus bas(CARRIER_ID) <= plus faible(@ MaxId)) et
(plus bas(DESCR) COMME plus bas(@InputDescr))
]]>
</Propriété>
J'ai obtenu que SQL d'une personne DBA et je me donne à comprendre que c'est un spécial ils ont créé juste pour moi. La clé unique il est CARRIER_ID.
Voici le bug, j'ai présenté:
<Identificateurs>
<Identificateur de Nom="CARRIER_ID" TypeName="System.String" />
<Identificateur de Nom="DESCR" TypeName="System.String" />
</Identificateurs>
Quelque part le long de la ligne, J'avais réussi à me confondre au sens de <Identificateurs> et ajouté DESCR, même si ce n'est pas réellement un identificateur. J'ai pris DESCR hors de l'ensemble des identifiants et hop! Tout cela a fonctionné.
J'espère que cela sauve quelqu'un quelque chagrin 🙂