ข้อผิดพลาดรันไทม์ BDC ที่อธิบาย

ผมเกิดผิดพลาด BDC สัปดาห์นี้ที่ประจักษ์เอง บนอินเทอร์เฟซผู้ใช้ และในการ 12 บันทึกกลุ่ม ขณะใช้งานจริง.

แรก, นี้ปรากฏในส่วนติดต่อผู้ใช้:

ไม่พบฟิลด์เพื่อแทรกค่าตัวระบุทั้งหมดดำเนิน SpecificFinder MethodInstance ชื่ออย่างถูกต้อง … ตรวจสอบมิเตอร์คป้อนเกี่ยวข้องกับแต่ละรหัสที่กำหนดสำหรับเอนทิตีนี้.

นี่เป็นภาพหน้าจอ:

clip_image001

ฉันสามารถทำให้ข้อความนี้ปรากฏในการ 12 กลุ่มล็อกที่จะ (ใช้ high-tech-don't-try-this-at-home ของฉันจดสิทธิบัตร "ลึกลับผิด" วิธีการ):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C ข้อมูล SharePoint Portal Server ธุรกิจ 6q4x สูงยกเว้นใน BusinessDataWebPart.OnPreRender: System.InvalidOperationException: ค่าตัวระบุ ”, ของชนิด ”, ไม่ถูกต้อง. คาดค่าตัวระบุของชนิด 'System.String'. ที่ Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(วัตถุ[] subIdentifierValues, LobSystemInstance lobSystemInstance) ที่ Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(เอนทิตีของเอนทิตี, วัตถุ[] userValues, LobSystemInstance lobSystemInstance) ที่ Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(ดู desiredView) ที่ Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() ที่ Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

ฉันค้นหาสถาน และพบบางเป้าหมายในการ ฟอรั่ม MSDN, แต่พวกเขาไม่เพียงพอที่จะเข้าใจสิ่งที่ฉันได้ทำผิด. เฝ้าดูเว็บคาสต์โดย Ted Pattison ที่ของฉัน บริษัท มี squirreled เก็บบนเซิร์ฟเวอร์และมาตระหนักถึงปัญหาของฉัน.

ใน ADF ของฉัน, ฉันกำลังเชื่อมต่อกับฐานข้อมูล SQL แสดง:

            <คุณสมบัติ ชื่อ="RdbCommandText" ชนิด="System.String">
              <![CDATA[
                เลือก SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      ประเทศ, ADDRESS1, ADDRESS2, ADDRESS3, ADDRESS4, เมือง, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      เขต, รัฐ, ไปรษณีย์, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, โทรศัพท์, ส่วนขยาย, โทรสาร, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG จาก dbo.PS_CARRIER_ID_VW ด้วย (nolock)
                ซึ่ง
                  (SETID <> 'หุ้น') และ
                  (ต่ำกว่า(CARRIER_ID) >ล่าง =(@MinId)) และ
                  (ต่ำกว่า(CARRIER_ID) <ล่าง =(@MaxId)) และ
                  (ต่ำกว่า(DESCR) ชอบล่าง(@InputDescr))
                ]]>
            </คุณสมบัติ>

ผมให้ที่ SQL จากบุคคลรวม และฉันให้เข้าใจว่า เป็นการ พิเศษ มุมมองที่พวกเขาสร้างขึ้นสำหรับฉัน. คีย์เฉพาะมีอยู่ CARRIER_ID.

นี่คือปัญหาที่ผมแนะนำ:

      <ตัวบ่งชี้>
        <รหัส ชื่อ="CARRIER_ID" TypeName="System.String" />
        <รหัส ชื่อ="DESCR" TypeName="System.String" /> 
</ตัวบ่งชี้>

บางแห่งตามแนว, ฉันได้จัดการสับสนตัวเองมากกว่าความหมายของ <ตัวบ่งชี้> และเพิ่ม DESCR แม้ว่าจะไม่เป็นจริงรหัส. ผมเอา DESCR รหัสชุดและ presto! มันทั้งหมดที่ทำงาน.

I hope this saves someone some grief 🙂

แท็กของ Technorati: , , ,

2 คิดเกี่ยวกับ“ข้อผิดพลาดรันไทม์ BDC ที่อธิบาย

  1. Paul Galvin

    เปียเตอร์, คุณ probalby แก้ไขนี้ โดยขณะนี้, แต่ฉันเดา ว่า มันจะเกี่ยวข้องกับข้อกำหนดในส่วนหลัง. บางที SQL ตัวเขตถูกจำกัด 60 ตัวอักษร? สิ่งที่ชอบที่?

  2. ปิเอเตอร์ Veenstra

    สวัสดี,

    ฉันมีปัญหากับ BDC, และไม่ทราบว่า คุณสามารถช่วยนี้?

    ผมใช้ค่า identifiier ( หมายเลขและฟิลด์คำอธิบาย), เมื่อใดก็ตามจำนวนตัวอักษรเกิน 60 ฉันได้รับข้อผิดพลาด foollowing:

    ค่าข้อความไม่ถูกต้อง

    เขตข้อมูลข้อความประกอบด้วยข้อมูลไม่ถูกต้อง. กรุณาตรวจสอบค่า แล้วลองอีกครั้ง.

    เข้าใจที่นี่จำกัดของ 60 ตัวอักษรที่มาจาก? และวิธีการแก้ไขปัญหานี้?

    ขณะนี้ฉันกำลังจำกัดอธิบายในเช่นวิธีที่จำนวนอักขระรวมไม่เกิน 60.

ปล่อยให้ตอบกลับ ปิเอเตอร์ Veenstra ยกเลิกการตอบ

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่. ช่องที่ต้องการถูกทำเครื่องหมาย *