Рішення: SPQuery не шукає папки

Минулого тижня я був здійснення послугами "розвивається" рішення для клієнта, який використовує каталогу бізнес-даних і SPQuery і зіткнулися з деякими труднощами при використанні SPQuery проти бібліотеку документів, що містять папки. Нижній рядок: призначити "Рекурсивний" для атрибута подання запиту.

Мій сценарій:

  • У понеділок, Я завантаження документа та постачання деяких мета-дані.
  • Наступного тижня, Я можу завантажити новий документ. Значна частина цього нового документа meta даних на основі документа, я завантажив в понеділок (що ми називаємо "головного документа").
  • Ми створили web послуги фасаду, який забезпечує BDC зі зручним інтерфейсом до списку, так що користувачі можуть легко знайти той понеділок документа за допомогою пошуку в заголовку.
  • Стовпець даних служби ПБД забезпечує дружній користувачеві інтерфейс. (Вони є моя спроба за допомогою каталогу бізнес-даних для більш дружній стовпця підстановки).

Остаточний служби ПБД фасад використовує запит як це робити підстановки:

 // Використовується U2U інструмент для надання допомоги у створенні цього CAML запиту.
      oQuery.Query =
        "<Де>";

      Якщо (titleFilter.Length > 0)
        oQuery.Query   =
          "  <І>";

      oQuery.Query   =
        "    <І>" +
        "      <Geq>" +
        "        <FieldRef ім'я =  "DocumentId" />" +
        "        <Повязані =  "Text">" + minId + "</Значення>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <FieldRef ім'я =  "DocumentId" />" +
        "        <Повязані =  "Text">" + maxId + "</Значення>" +
        "      </Leq>" +
        "    </І>";

      Якщо (titleFilter.Length > 0)
        oQuery.Query   =
          "    <Містить>" +
          "      <FieldRef ім'я =  "Title" />" +
          "      <Повязані =  "Text">" + titleFilter + "</Значення>" +
          "    </Містить>" +
          "  </І>";
      oQuery.Query   =
        "</Де>";

Під час початкового етапу розвитку, Це працював великий. Однак, ми ввели папки в каталог вирішити деякі проблеми і раптом, мій палітра каталогу бізнес-даних не дав жодних результатів. Я простежив це аж до того, що на SPQuery б ніколи не дав жодних результатів. Ми звикли папки в першу чергу дозволити декількох файлів з однаковими іменами для передавання, але з різними мета-дані. Коли файл передано, Ми створити папку на основі Ідентифікатор елемента списку а потім перемістіть файл там (Я писав про це Тут; у нас було змішані результати При такому підході, але загалом, він працює добре). Користувач не піклуються про папок і по суті, дійсно не розумію, що існують будь-які папки. Ми настроїли всі погляди на бібліотеки для відображення елементів безвідносно до папки.

Я вдарив цю проблему Удвічі кращий технічної реалізації розвивалися і вирішити її по-різному з кожним разом. В перший раз, Я не був за допомогою оператора МІСТИТЬ в запиті. Без МІСТИТЬ оператор, Я був в змозі вирішити цю проблему, вказавши погляд на contructor на SPQuery. Замість того щоб використовувати конструктор за промовчанням:

SPList oList = web.Списки["Документи"];

SPQuery oQuery = нові SPQuery();

Замість цього я використовував конструктор, що вказаний погляд:

SPList oList = web.Списки["Документи"];

SPQuery oQuery = нові SPQuery(oList.Views["Всі документи"]);

Що вирішена проблема, і я почав отримувати мої результати.

Потім я додав МІСТИТЬ оператор в суміші, і він зламав знову. Виявляється, що МІСТИТЬ оператор, наскільки я можу судити, не працює з тим, так само, як на простіше GEQ / LEQ операторів. Я зробив кілька пошуку і дізнався, що Перегляд атрибутів цей запит повинен бути встановлений на "Рекурсивний", як і в:

oQuery.ViewAttributes = "Сфера = "Recursive"";

Що вирішив проблему для МІСТИТЬ. Насправді, Це також вирішити мою вихідної задачі пошуку, і якщо я повинен був вказаний у рекурсивної атрибут в перший раз, Я б не зіткнулися питання знову.

Те, що подання на основі SPQuery працює для деяких операторів (GEQ/LEQ) а не інші (МІСТИТЬ), разом з тим, що KPI, схоже, не працювати на всіх з папку, що містить документ бібліотек приводить мене до думки, що SPQuery в деяких питаннях ортогональності.

Особлива подяка:

</кінець>

Підписатися на мій блог!

3 думки про «Рішення: SPQuery не шукає папки

  1. Без імені

    http://www.batteryfast.co.uk/asus/w3v.htm ASUS w3v акумулятор,
    http://www.batteryfast.co.uk/asus/w3000a.htm ASUS w3000a акумулятор,
    http://www.batteryfast.co.uk/asus/w3000.htm ASUS w3000 акумулятор,
    http://www.batteryfast.co.uk/asus/w3000v.htm ASUS 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 ASUS s52n акумулятор,
    http://www.batteryfast.co.uk/asus/s5000.htm ASUS s5000 акумулятор,
    http://www.batteryfast.co.uk/asus/s5200n.htm ASUS s5200n акумулятор,
    http://www.batteryfast.co.uk/asus/s5n.htm ASUS s5n акумулятор,
    http://www.batteryfast.co.uk/asus/90-naa1b1000.htm ASUS 90-naa1b1000 акумулятор,
    http://www.batteryfast.co.uk/asus/s2691061.htm ASUS 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 ASUS u5f акумулятор,
    http://www.batteryfast.co.uk/asus/u5a.htm ASUS u5a акумулятор,
    http://www.batteryfast.co.uk/asus/u5f.htm ASUS 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 m-710 акумулятор,
    http://www.batteryfast.co.uk/dell/latitude-x200.htm Dell latitude x 200 акумулятор,
    http://www.batteryfast.co.uk/dell/8u443.htm Dell 8u443 акумулятор,
    http://www.batteryfast.co.uk/dell/312-0058.htm Dell 312-0058 акумулятор,

Дати відповідь

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *