โซลูชั่น: SPQuery ค้นหาโฟลเดอร์

ฟิลด์นี้ถูกใช้งานสัปดาห์ที่ผ่านมาการ "พัฒนา" โซลูชั่นสำหรับไคลเอนต์ที่ใช้ BDC และ SPQuery และประสบปัญหาบางอย่างใช้ SPQuery กับไลบรารีเอกสารที่ประกอบด้วยโฟลเดอร์. บรรทัดด้านล่าง: กำหนดซ้ำ"" ถึงแอตทริบิวต์ของมุมมองของแบบสอบถาม.

สถานการณ์สมมติของฉัน:

  • วันจันทร์, ผมอัปโหลดเอกสาร และจัดหาข้อมูลบาง meta.
  • ในสัปดาห์ถัดไป, Upload เอกสารใหม่. ของข้อมูลเมตาของเอกสารนี้ใหม่ตามเอกสารที่ผมอัพโหลดวันจันทร์ (ซึ่งเราเรียก "เอกสารหลัก").
  • เราได้สร้างซุ้มบริการเว็บที่มีอินเทอร์เฟซแบบ BDC มิตรในรายการเพื่อให้ผู้ใช้สามารถหาเอกสารวันจันทร์ที่ผ่านการค้นหาชื่อเรื่อง.
  • คอลัมน์ BDC ข้อมูลช่วยให้ผู้เป็นมิตร. (นี้เป็นส่วนหนึ่งของความพยายามของฉันที่ใช้ BDC สำหรับคอลัมน์ค้นหาง่ายขึ้น).

ซุ้มบริการขั้นสุดท้ายของ BDC ใช้แบบสอบถามเช่นนี้จะทำการค้นหา:

 // ใช้เครื่องมือ U2U เพื่อช่วยในการสร้างแบบสอบถามนี้ CAML.
      oQuery.Query =
        "<ที่>";

      ถ้า (titleFilter.Length > 0)
        oQuery.Query  =
          "  <และ>";

      oQuery.Query  =
        "    <และ>" +
        "      <Geq>" +
        "        <ชื่อ FieldRef =  "DocumentId" />" +
        "        <ค่าชนิด =  "Text">" + minId + "</ค่า>" +
        "      </Geq>" +
        "      <แบล็คไลท์>" +
        "        <ชื่อ FieldRef =  "DocumentId" />" +
        "        <ค่าชนิด =  "Text">" + maxId + "</ค่า>" +
        "      </แบล็คไลท์>" +
        "    </และ>";

      ถ้า (titleFilter.Length > 0)
        oQuery.Query  =
          "    <ประกอบด้วย>" +
          "      <ชื่อ FieldRef =  "Title" />" +
          "      <ค่าชนิด =  "Text">" + titleFilter + "</ค่า>" +
          "    </ประกอบด้วย>" +
          "  </และ>";
      oQuery.Query  =
        "</ที่>";

ในระหว่างระยะเริ่มต้นของการพัฒนา, นี้ทำงานดี. อย่างไรก็ตาม, เราแนะนำโฟลเดอร์ในไดเรกทอรีเพื่อแก้ปัญหา และทันที, ตัวเลือกของฉัน BDC จะไม่ส่งคืนผลลัพธ์ใด ๆ. ติดตามนี้ลงไปความจริงที่ว่า SPQuery ที่จะไม่ส่งคืนผลลัพธ์ใด ๆ. เราใช้โฟลเดอร์หลักเพื่อให้แฟ้มหลายแฟ้มที่ มีชื่อเดียวกันที่สามารถอัปโหลด แต่ มีข้อมูลเมตาที่แตกต่างกัน. เมื่ออัปโหลดแฟ้ม, เราสร้างโฟลเดอร์ขึ้นอยู่กับรหัสของรายการ และจากนั้น ย้ายแฟ้มมี (ผมเขียนว่า ที่นี่; เราเคย ผลผสม ด้วยวิธีนี้ แต่ทั้งหมด, ทำงานดี). ผู้ใช้ไม่สนใจ เกี่ยวกับโฟลเดอร์ และในความเป็นจริง, ไม่จริง ๆ เข้าใจว่า มีโฟลเดอร์ใด ๆ. เราได้กำหนดค่ามุมมองทั้งหมดในไลบรารีจะแสดงรายการโดยไม่คำนึงถึงโฟลเดอร์.

ฉันตีปัญหานี้สองครั้งเป็นการนำเทคนิคพัฒนา และแก้ไขมันแตกต่างกันแต่ละครั้ง. เป็นครั้งแรก, ฉันไม่ได้ใช้ตัว CONTAINS ในแบบสอบถาม. โดยตัวดำเนินการ CONTAINS, ผมแก้ปัญหา โดยการระบุมุมมองของ SPQuery contructor. แทนการใช้ตัวสร้างค่าเริ่มต้น:

Splist.update() oList =เว็บรายการ["เอกสาร"];

SPQuery oQuery = ใหม่ SPQuery();

แต่ใช้ตัวสร้างที่ระบุมุมมอง:

Splist.update() oList =เว็บรายการ["เอกสาร"];

SPQuery oQuery = ใหม่ SPQuery(oList.Views["เอกสารทั้งหมด"]);

ที่แก้ไขปัญหา และฉันเริ่มที่จะได้รับผลของฉัน.

แล้วเพิ่มตัว CONTAINS เข้าผสม และยากจนอีก. ดังปรากฎว่าที่ดำเนิน CONTAINS, ตราบใดที่ฉันสามารถบอก, ไม่ทำงานกับมุมมองแบบเดียวกับ GEQ ง่ายกว่า / ตัวแบล็คไลท์. ฉันทำบางค้น และเรียนรู้ว่า การสอบถาม ViewAttributes ควรตั้งค่า "ซ้ำ", เช่นใน:

oQuery.ViewAttributes = "ขอบเขต = "Recursive"";

ที่แก้ไขปัญหาสำหรับ CONTAINS. อันที่จริง, นี้ยังแก้ไขปัญหาค้นหาเดิมของฉัน และถ้าฉันมีระบุการเกิดซ้ำของแอตทริบิวต์ครั้งแรก, ฉันจะไม่ได้ทำงานเป็นปัญหาอีก.

ความจริงที่ว่า SPQuery ที่ตามดูการทำงานสำหรับผู้ประกอบการบาง (GEQ/แบ ล็คไลท์) และอื่น ๆ (ประกอบด้วย), ควบคู่กับความจริงที่ดูเหมือนจะไม่ ทำงานกับไลบรารีเอกสารที่ประกอบด้วยโฟลเดอร์เป้าหมายให้ฉันเชื่อว่า SPQuery มีบางประเด็น orthogonality Kpi.

ขอขอบพระคุณ:

</สิ้นสุด>

สมัครสมาชิกไปยังบล็อกของฉัน!

3 คิดเกี่ยวกับ“โซลูชั่น: SPQuery ค้นหาโฟลเดอร์

  1. ไม่มีชื่อ

    http://www.batteryfast.co.uk/asus/w3v.htm อัสซุส w3v แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/w3000a.htm อัสซุส w3000a แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/w3000.htm แบตเตอรี่ของ w3000 อัสซุส,
    http://www.batteryfast.co.uk/asus/w3000v.htm อัสซุส w3000v แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/a31-s5.htm แบตเตอรี่ asus a31-s5,
    http://www.batteryfast.co.uk/asus/a32-s5.htm แบตเตอรี่ asus a32-s5,
    http://www.batteryfast.co.uk/asus/s52n.htm อัสซุส s52n แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/s5000.htm แบตเตอรี่ asus s5000,
    http://www.batteryfast.co.uk/asus/s5200n.htm อัสซุส s5200n แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/s5n.htm อัสซุส s5n แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/90-naa1b1000.htm แบตเตอรี่ asus 90-naa1b1000,
    http://www.batteryfast.co.uk/asus/s2691061.htm อัสซุส s2691061 แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/a42-v6.htm แบตเตอรี่ asus a42-v6,
    http://www.batteryfast.co.uk/asus/a32-u5.htm แบตเตอรี่ asus a32-u5,
    http://www.batteryfast.co.uk/asus/u5f.htm อัสซุส u5f แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/u5a.htm อัสซุส u5a แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/u5f.htm อัสซุส u5f แบตเตอรี่,
    http://www.batteryfast.co.uk/asus/u5.htm แบตเตอรี่ asus u5,
    http://www.batteryfast.co.uk/compaq/nw8000.htm compaq nw8000 แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/nc8000.htm compaq nc8000 แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/v1000.htm แบตเตอรี่ compaq v1000,
    http://www.batteryfast.co.uk/compaq/nc6000.htm แบตเตอรี่ compaq nc6000,
    http://www.batteryfast.co.uk/compaq/nx5000.htm compaq nx5000 แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/n600.htm แบตเตอรี่ compaq n600,
    http://www.batteryfast.co.uk/compaq/n600c.htm compaq n600c แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/n610c.htm compaq n610c แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/n610v.htm compaq n610v แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/n620c.htm compaq n620c แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/e500.htm แบตเตอรี่ compaq e500,
    http://www.batteryfast.co.uk/compaq/e500s.htm compaq e500s แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/v300.htm แบตเตอรี่ compaq v300,
    http://www.batteryfast.co.uk/compaq/v500.htm แบตเตอรี่ compaq v500,
    http://www.batteryfast.co.uk/compaq/pp2060.htm compaq pp2060 แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/nx9000.htm compaq nx9000 แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/nx9005.htm compaq nx9005 แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/nx9010.htm แบตเตอรี่ compaq nx9010,
    http://www.batteryfast.co.uk/compaq/nx9020.htm compaq nx9020 แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/n110.htm แบตเตอรี่ compaq n110,
    http://www.batteryfast.co.uk/compaq/n110s.htm compaq n110s แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/pp2101x.htm compaq pp2101x แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/presario-2100.htm compaq presario 2100 แบตเตอรี,
    http://www.batteryfast.co.uk/compaq/ze4000.htm compaq ze4000 แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/f4809a.htm compaq f4809a แบตเตอรี่,
    http://www.batteryfast.co.uk/compaq/f4812a.htm แบตเตอรี่ compaq f4812a,
    http://www.batteryfast.co.uk/dell/inspiron-700m.htm แบตเตอรี่ของ dell inspiron 700 เมตร,
    http://www.batteryfast.co.uk/dell/inspiron-710m.htm แบตเตอรี่ของ dell inspiron 710 เมตร,
    http://www.batteryfast.co.uk/dell/latitude-x200.htm แบตเตอรี่ของ dell ละติจูด x 200,
    http://www.batteryfast.co.uk/dell/8u443.htm แบตเตอรี่ของ dell 8u443,
    http://www.batteryfast.co.uk/dell/312-0058.htm dell 312-0058 แบตเตอรี,

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

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