Arhive de categorii: BDC

Iute Vîrf: Numerele de versiune BDC ADF sunt prietenul tău

Daca tu esti parte de codificare ADF fişiere şi de a face o mulţime de cicluri de import un cod/test, utilizaţi numărul de versiune pentru a face viaţa mai uşoară.

Urasc sa recunosc, dar până la această săptămână, Am fost întotdeauna ştergerea ADF şi re-importul de l. Acest lucru ar sparge coloane de date mea de afaceri şi mă re-sârmă le face. Toate inutile.

Fişier aceasta sub "este evident o dată tu a vedea it".

Exemplu:

<LobSystem
xmlns:XSi="http://www.w3.org/ 2001/XMLSchema-exemplu" XSi:schemaLocation="http://schemas.Microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Tip="WebService" Versiunea="1.2.0.0" nume="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/office/2006/03/BusinessDataCatalog">

Schimba acea versiune şi re-importul şi coloana de date de afaceri existente utilizează versiunea actualizată automat cu nici o configurare suplimentare necesare.

</scop>

Aboneaza-te la blog-ul meu.

Technorati Tags:

Soluție: Alegere BDC afişează numai o coloană rezultatelor

În încercările mele pe-merge la furnizarea de un coloană de căutare mai util utilizează BDC, Am lovit un perete cu selectorul de BDC. Dacă nu aţi vedea it, selectorul BDC este similar cu o alegere de oameni, cu excepţia faptului că funcţionează cu coloane de tip "date de afaceri".

Accesaţi selectorul făcând clic pe pictograma carte deschisă de o coloană de date de afaceri ca:

imagine

Imaginea de mai sus arată o coloană de date de afaceri numit "Master Document Id". Acea coloană este conectat, Via BDC, la un serviciu web. Serviciul web întoarce două coloane de informaţii: Document ID şi titlul. Afaceri scopul aici este de a oferi o "acest document este bazat pe" funcţia. Utilizatorii selectați un maestru"" document şi salvaţi-le atunci când, un receptor de eveniment copiază meta câmpurile de date la care se face referire maestru.

În mod implicit, selectorul BDC arata acest lucru atunci când am de căutare pentru un document al cărui ID = "38":

clip_image002

Care este util, dar nu suficient de bun. Oamenii nu gândesc în termeni de ID-uri, ei cred în titluri sau alte date meta. Târnăcop vă permite să căutaţi pe alte coloane (ex. Titlul) dar nu va afişa lista reale de titluri a găsit, doar lor DocId's așa cum se arată aici:

clip_image002[1]

(Ecran shot nu este atât de mare, pentru că am nu alegeţi o căutare care returnează niciun rezultat valid, dar puteţi vedea că dacă acesta a găsit unele rezultate, Acesta ar fi arătat numai DocId lui, nu titluri).

Am căutat de înaltă şi joasă pentru răspunsul la acest lucru şi nu a reuşit. Colegul meu, Venerabilul Jonathan Bradshaw, a cu care se confruntă şi a rezolvat această problemă. Când am ajuns la el pentru ajutor, El a subliniat mine în direcţia cea bună.

Configuraţi selectorul pentru a afişa mai multe coloane via "ShowInPicker" proprietate în ADF:

<Proprietate nume="ShowInPicker" Tip="System.boolean">adevărat</Proprietate>

În mai multe detalii:

  <!-- Titlul -->
  <TypeDescriptor TypeName="System.string" nume="Titlul" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titlul</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Proprietăţi>
      <Proprietate nume="DisplayByDefault" Tip="System.boolean">adevărat</Proprietate>
      <Proprietate nume="ShowInPicker" Tip="System.boolean">adevărat</Proprietate>
    </Proprietăţi>
  </TypeDescriptor>

Setarea acestei proprietăți să introducă o problemă minoră. De îndată ce aţi stabilit-o o dată, ai nevoie să-l setaţi pentru fiecare coloană pe care doriţi să arate. În cazul meu, Selector de BDC a arătat DocId implicit. Cu toate acestea, după ce am adăugat "ShowInPicker" titlu, DocId nu mai este afişată. I solved that by explicitly setting the ShowInPicker property for Doc ID.

Aici este rezultatul:

imagine

(Sa-ti explic ciudat "168 – CamlSchema.xsd" construction in a future blog post. În scurt, Acesta este un şir concatenat care permite o puţin mai bună experienţă de utilizator).

desigur, având în scris această intrare în blog, Tocmai am făcut o căutare pentru "ShowInPicker" şi a găsit numeroase hit-uri, inclusiv: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. It explains the meaning of that property along with some other good BDC stuff.

</scop>

Aboneaza-te la blog-ul meu!

Technorati Tags:

Soluţie pentru eşecul de Import BDC ADF: “Eroare:”

Am fost din nou crafting fişierelor BDC ADF de mână (aşa că am putea construi meu "cobor peluza mea!" Cred) şi a lovit această frumoasă eroare:

imagine

"Aplicarea definiţie de import nu a reușit. Eroare:"

După cum puteţi vedea, Există o eroare, dar … nu o să-mi spui ce este.

În cazul meu, problema sa dovedit că am a început cu un ADF funcţionale pentru un alt proiect care conectat la o bază de date şi a executat o interogare SQL împotriva o. În acest nou proiect, Am sunat o metoda pe un serviciu web. Am deposedat afară chestii specifice DB şi a adăugat lucrurile mele de serviciu web, dar nu a reușit să actualizeze <LobSystem>pe tip atribut. L-am trecut la "WebService" şi din fericire am mutat la erori de import mai noi şi mai incitante, care au fost manipulate în timp util.

Aici este greşit LobSystem:

<LobSystem
xmlns:XSi =http://www.w3.org/ 2001/XMLSchema-exemplu
XSi:schemaLocation =http://schemas.Microsoft.com/office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Tip = "baze de date"
Versiune = "1.0.0.0" Nume = "xyzzy"
xmlns ="
http://schemas.Microsoft.com/office/2006/03/BusinessDataCatalog">

Acest lucru este corect:

<LobSystem
xmlns:XSi =http://www.w3.org/ 2001/XMLSchema-exemplu
XSi:schemaLocation =http://schemas.Microsoft.com/office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Tip = "WebService"
Versiune = "1.0.0.0" Nume = "xyzzy"
xmlns ="
http://schemas.Microsoft.com/office/2006/03/BusinessDataCatalog">

</scop>

Technorati Tags:

BDC pare un înlocuitor viabil pentru căutări

ACTUALIZARE: Această postare MSDN are câteva observaţii interesante de JXJ pe baza lui, în principal negativ, experienţele merge în jos această cale: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1

Avem un scenariu de afaceri în cazul în care avem nevoie pentru a lega două biblioteci de documente prin intermediul comune "document ID" câmp.

Am folosesc adesea o coloană de căutare pentru a pune în aplicare link-uri ca acest lucru. Există câteva dezavantaje pentru coloanele de căutare, trei dintre care sunt:

  1. Numai o singură coloană de căutare căutare bibliotecă pot fi asociate.
  2. Performanţă: Bibliotecă sursă ar putea contine sute de intrări. Care este de prea multe intrări în căutare.
  3. Căutare: Nu există nici o căutare integrat. Nu mă refer în sensul muşchi de căutare, dar nu există nici o modalitate de a căuta / filtrarea pe mai multe coloane din biblioteca de documente sursă şi găsiţi link-ul pe care doriţi.

Susţinută de BDC, putem folosi o afacere date"" tip de coloană şi oferă o căutare superioară şi de a permite chiar şi mai multe coloane de date pentru a apărea în vizualizările listă.

Am avut oarecare succes preliminare cu această abordare şi planul de a scrie mai multe despre ea.

Dacă aţi lucrat acest unghi înainte şi să aibă orice Comentarii, vă rugăm să parts!

</scop>

Technorati Tags:

Soluţie pentru eroare de Import BDC: “Imposibil de încărcat Tipul descris de TypeDescriptor TypeName …”

Am fost de lucru cu BDC astăzi, codificare ADF fişiere de mână şi generatoare de mine unele erori. O astfel de eroare:

Aplicarea definiţie importul nu a reușit. Eroare: Imposibil de încărcat Tipul descris de TypeDescriptor TypeName. Numele parametrului: typeName eroare a fost întâlnită la sau chiar înainte de linie: ' 35’ şi poziţia: "20".

MOSS afişat această eroare când am încercat să importați fișierul ADF XML.

Am cercetat Internet şi a constatat că am fost corelarea numele de exemplu LOB (la <LobSystemInstance>) în mea <TypeDescriptor> nod atunci când ar trebui să aibă de referinţă numele LOB în sine (la <LobSystem>).

Greşit:

<TypeDescriptor-ul TypeName="Conchango.KeyValue, Numele de exemplu LOB" Nume = "KeyValue">

Corecta:

<TypeDescriptor-ul TypeName="Conchango.KeyValue, LOB numele" Nume = "KeyValue">

Sper că acest lucru economiseşte cineva o oră sau două de timp.

</scop>

Aboneaza-te la blog-ul meu!

Technorati Tags:

O eroare de BDC runtime a explicat

Am cauzat de o eroare de BDC această săptămână care a manifestat pe interfaţa cu utilizatorul şi în 12 jurnal de stup în timpul rulării.

Prima, Aceasta a apărut în interfaţa cu utilizatorul:

Imposibil de găsit câmpuri pentru a insera toate valorile identificatorilor pentru a executa corect o SpecificFinder MethodInstance cu numele … Asigure parametrii de intrare au TypeDescriptor asociați cu fiecare identificator definit pentru această entitate.

Aici este un ecran shot:

clip_image001

S-ar putea provoca, de asemenea, acest mesaj pentru a apărea în 12 stup log la va (ajutorul meu brevetat high-tech-don't-try-this-at-home "misterioase erori" metoda):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C date de afaceri SharePoint Portal Server 6q4x mare excepţie în BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Valoarea de identificator ”, de tip ”, nu este valid. Aşteptat valoare identificator de tip 'System.String'. la Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Obiect[] subIdentifierValues, LobSystemInstance lobSystemInstance) la Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entitate entitate, Obiect[] userValues, LobSystemInstance lobSystemInstance) la Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vezi desiredView) la Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() la Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Am căutat în jurul şi a găsit unele conduce în MSDN forum, dar nu au fost suficient pentru mine să înţeleagă ceea ce am făcut greşit. Am urmarit o prezentare Web de Ted Pattison care meu Compania a squirreled deplasare pe un server şi a venit să realizeze problema mea.

În mea ADF, Eu sunt conectarea la o bază de date SQL, aşa cum se Arată:

            <Proprietate nume="RdbCommandText" Tip="System.string">
              <![CDATA[
                SELECTAŢI SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      TARA, ADDRESS1, ADDRESS2, ADDRESS3, ADDRESS4, CITY, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      COMITATUL, STAT, POŞTALE, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, PRELUNGIRE, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG de dbo.PS_CARRIER_ID_VW cu (nolock)
                ÎN CAZUL ÎN CARE
                  (SETID <> "COTA") şi
                  (Inferioară(CARRIER_ID) >= mai mici(@MinId)) şi
                  (Inferioară(CARRIER_ID) <= mai mici(@MaxId)) şi
                  (Inferioară(DESCR) CA mai mici(@InputDescr))
                ]]>
            </Proprietate>

I-a fost astfel că SQL de la un DBA persoana si am dat de înţeles că este o speciale Vezi au creat doar pentru mine. Cheie unic este CARRIER_ID.

Aici este bug-ul, am introdus:

      <Identificatori>
        <Identificator nume="CARRIER_ID" TypeName="System.string" />
        <Identificator nume="DESCR" TypeName="System.string" /> 
</Identificatori>

Undeva de-a lungul liniei, Am reuşit să mă confunde în sensul <Identificatori> şi a adăugat DESCR, chiar dacă nu este de fapt un identificator. Am luat DESCR din identificatori set şi presto! Totul a lucrat.

I hope this saves someone some grief 🙂

Technorati Tags: , , ,

BDC ADF şi prietenul tău, CDATA

Am observat unele ciudat şi inutile mână-codare de RdbCommandText în câteva exemple (inclusiv documentaţia MSDN).

Am vrut să subliniez a nou-veniţi la BDC că comenzi poate fi înfăşurat în interiorul o etichetă CDATA în naturală"" forma. Deci, această construcţie incomode:

<Proprietate nume="RdbCommandText" Tip="System.string">
Selectaţi dbo.MCRS_SETTLEMENT.id, DBO.MCRS_SETTLEMENT.settlement la dbo.MCRS_SETTLEMENT
ÎN CAZUL ÎN CARE (ID-ul &gt;= @MinId) ŞI (ID-ul &lt;= @MaxId)
</Proprietate>

pot fi reprezentate mai bine în acest fel:

<Proprietate nume="RdbCommandText" Tip="System.string">
<![CDATA[
Selectaţi dbo.MCRS_SETTLEMENT.id, DBO.MCRS_SETTLEMENT.settlement la dbo.MCRS_SETTLEMENT
ÎN CAZUL ÎN CARE (ID-ul >= @MinId) ŞI (ID-ul <= @MaxId)
]]>
</Proprietate>

</scop>

BDC grund

Intro la BDC

Exemplu funcţionale: ADF BDC care se conectează la baza de date SQL cu embedded user identitate şi password

Am nevoie pentru a firului de până MOSS o bază de date SQL prin intermediul BDC. În scopuri de testare/POC, Am vrut să încorpora SQL cont utilizator ID-ul şi parola în Alimentatorul automat de documente. Incepand cu Acest şablon (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Am creat un ADF care se conectează la o anumită instanţă de SQL server şi se conectează cu un anumit utilizator ID-ul şi parola şi indicat în acest fragment:

  <LobSystemInstances>
    <LobSystemInstance nume="ClaimsInstance">
      <Proprietăţi>
        <Proprietate nume="AuthenticationMode" Tip="System.string">PassThrough</Proprietate>
        <Proprietate nume="DatabaseAccessProvider" Tip="System.string">SqlServer</Proprietate>
        <Proprietate nume="Sursa de date RdbConnection" Tip="System.string">exemplu de real serveractual</Proprietate>
        <Proprietate nume="RdbConnection iniţial Catalog" Tip="System.string">real catalog inițială</Proprietate>
        <Proprietate nume="RdbConnection integrate de securitate" Tip="System.string">SSPI</Proprietate>
        <Proprietate nume="Gruparea de RdbConnection" Tip="System.string">fals</Proprietate>

        <!-- Acestea sunt valori cheie: -->
        <Proprietate nume="ID-ul RdbConnection" Tip="System.string">oefecti ID utilizator</Proprietate>
        <Proprietate nume="RdbConnection parola" Tip="System.string">real Password</Proprietate>
        <Proprietate nume="RdbConnection Trusted_Connection" Tip="System.string">fals</Proprietate>

      </Proprietăţi>
    </LobSystemInstance>
  </LobSystemInstances>

Nu este o bună practică, dar este util pentru o configurare simplă şi rapidă de testare. Acest lucru a fost surprinzător de greu să dau seama. N-am mai găsit un exemplu funcţionale cu cuvinte cheie de căutare:

  • ADF încorporat userid şi password
  • Încorporaţi id de utilizator şi parola în Alimentatorul automat de documente
  • Încorporaţi id de utilizator şi parola în adf bdc
  • Grund de bdc SharePoint
  • SharePoint încorporaţi id de utilizator şi parola în Alimentatorul automat de documente

</scop>

Aboneaza-te la blog-ul meu.