Un errore di runtime BDC spiegato

Mi ha causato un errore di BDC questa settimana che si è manifestata nell'interfaccia utente e nella 12 registro dell'alveare in fase di esecuzione.

Primo, Questa apparve nell'interfaccia utente:

Non riusciva a trovare campi per inserire tutti i valori dell'identificatore per eseguire correttamente una SpecificFinder MethodInstance con nome … Controllare che i parametri di input includano TypeDescriptor associati a ogni identificatore definito per questa entità.

Ecco una schermata:

clip_image001

Potuto anche causare questo messaggio a comparire nella 12 registro dell'alveare a sarà (usando il mio high-tech-don't-try-this-at-home brevettato "misteriosi Errori" Metodo.):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C dati di SharePoint Portal Server Business 6q4x alta eccezione in BusinessDataWebPart.OnPreRender: System. InvalidOperationException: Il valore dell'identificatore ”, di tipo ”, non è valido. Valore previsto identificatore di tipo 'System. String'. a Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Oggetto[] subIdentifierValues, LobSystemInstance lobSystemInstance) a Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entità di entità, Oggetto[] userValues, LobSystemInstance lobSystemInstance) a Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vista desiredView) a Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() a Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Ho cercato in giro e trovato qualche porta nella Forum MSDN, ma non erano abbastanza per me per capire quello che stavo facendo sbagliato. Ho guardato un webcast di Ted Pattison che il mio azienda ha squirreled lontano su un server ed è venuto a realizzare il mio problema.

Nel mio ADF, Connettersi a un database SQL come illustrato:

            <Proprietà Nome="RdbCommandText" Tipo="System. String">
              <![CDATA[
                SELEZIONARE SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      PAESE, INDIRIZZO1, INDIRIZZO2, INDIRIZZO3, INDIRIZZO4, CITTÀ, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      CONTEA DI, STATO, POSTALE, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFONO, ESTENSIONE, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG da dbo.PS_CARRIER_ID_VW con (NOLOCK)
                DOVE
                  (SETID <> 'PARTI') e
                  (inferiore(CARRIER_ID) >= bassa(@MinId)) e
                  (inferiore(CARRIER_ID) <= bassa(@ MaxId)) e
                  (inferiore(DESCR) COME inferiore(@InputDescr))
                ]]>
            </Proprietà>

Mi è stato fornito che SQL da una persona DBA e sono fatto capire che è un speciale vista che hanno creato solo per me. La chiave univoca c'è CARRIER_ID.

Ecco il bug che introdotto:

      <Identificatori>
        <Identificatore Nome="CARRIER_ID" TypeName="System. String" />
        <Identificatore Nome="DESCR" TypeName="System. String" /> 
</Identificatori>

Da qualche parte lungo la linea, Ero riuscito a confondere me stesso sopra il significato del <Identificatori> e aggiunto DESCR, anche se non è in realtà un identificatore. Ho preso DESCR fuori il set di identificatori e presto! E tutto ha funzionato.

Spero che questo salvi qualcuno un po 'di dolore 🙂

Technorati Tags: , , ,

2 pensieri su "Un errore di runtime BDC spiegato

  1. Paul Galvin

    Pieter, è aumentata risolto questo ormai, ma la mia ipotesi è che vorrei essere correlato alla definizione sul back-end. Forse il campo SQL stesso è limitato a 60 chars? Qualcosa del genere?

    Risposta
  2. Pieter Veenstra

    Ciao,

    Io ho un problema con un BDC, e mi chiedo se può aiutare con questo?

    Sto usando due campi identifiier ( un numero e un campo di descrizione), ogni volta che supera il numero totale di caratteri 60 Io sono sempre gli errori di foollowing:

    Valore del testo non valido

    Un campo di testo contiene dati non validi. Si prega di controllare il valore e riprovare.

    Capisco dove questo limite di 60 caratteri proviene da? e come risolvere questo problema?

    Attualmente io sto limitando la descrizione in tale modo che non superi il numero totale di caratteri 60.

    Risposta

Lasciare una risposta a Pieter Veenstra cancella risposta

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *