Řešení: SPQuery neprohledává složky

Minulý týden jsem se provádí "vyvíjející se" řešení pro klienta, který používá BDC a SPQuery a narazil na nějaké potíže s používáním SPQuery proti knihovnu dokumentů obsahující složky. Čára dole: přiřadit "rekurzivní" do atributu zobrazení dotazu.

Můj scénář:

  • V pondělí, Uložit dokument a některé údaje meta.
  • Následující týden, Nahrát nový dokument. Velká část tohoto nového dokumentu meta dat je založen na dokumentu, který jsem nahrál v pondělí (kterou nazýváme "hlavní dokument").
  • Vytvořili jsme webové služby fasáda, která poskytuje BDC-přátelské rozhraní, do seznamu, takže uživatelé mohou snadno vyhledat dokument pondělí přes hledání v titulech.
  • Sloupec dat záložní řadič domény poskytuje přehledné uživatelské rozhraní. (To je součástí můj pokus o použití služby BDC pro vyhledávací sloupec s více přátelské).

Konečné fasádě služby BDC používá dotaz takto udělat vyhledávání:

 // Používá U2U nástroj k pomoci při vytváření tento dotaz CAML.
      oQuery.Query =
        "<Kde>";

      Pokud (titleFilter.Length > 0)
        oQuery.Query  =
          "  <A>";

      oQuery.Query  =
        "    <A>" +
        "      <GEQ>" +
        "        <FieldRef jméno =  "DocumentId" />" +
        "        <Typ hodnoty =  "Text">" + minId + "</Hodnota>" +
        "      </GEQ>" +
        "      <LEQ>" +
        "        <FieldRef jméno =  "DocumentId" />" +
        "        <Typ hodnoty =  "Text">" + maxId + "</Hodnota>" +
        "      </LEQ>" +
        "    </A>";

      Pokud (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Obsahuje>" +
          "      <FieldRef jméno =  "Title" />" +
          "      <Typ hodnoty =  "Text">" + titleFilter + "</Hodnota>" +
          "    </Obsahuje>" +
          "  </A>";
      oQuery.Query  =
        "</Kde>";

V počáteční fázi vývoje, fungovalo to skvěle. Avšak, Zavedli jsme složky do adresáře k řešení některých problémů a najednou, můj výběr záložní řadič domény nevrátí žádné výsledky. Sledoval jsem to se skutečností, že SPQuery by se nikdy nevrátí žádné výsledky. Zvykli jsme si složky především umožnit více souborů se stejným názvem a uložit, ale s různými meta data. Když je soubor odeslán, vytvořit složku založený na ID položky seznamu a potom přesuňte soubor tam (Jsem psal o tom Tady; Měli jsme smíšené výsledky s tímto přístupem, ale na celém, funguje to dobře). Uživatele nezajímá, o složkách a ve skutečnosti, nechápe, že jsou všechny složky. Jsme nakonfigurovali názory na knihovnu zobrazíte položky bez ohledu na složky.

Trefil jsem tento problém dvakrát jako technická realizace vyvinul a řešit to jinak pokaždé. První čas, Nebyl pomocí operátoru CONTAINS v dotazu. Bez operátor CONTAINS, Byl jsem schopen problém vyřešit zadáním pohled na contructor SPQuery. Namísto použití výchozí konstruktor:

SPList.Update() oList = www.Seznamy["Dokumenty"];

SPQuery oQuery = nové SPQuery();

Namísto toho používá konstruktor, který zadaný pohled:

SPList.Update() oList = www.Seznamy["Dokumenty"];

SPQuery oQuery = nové SPQuery(oList.Views["Všechny dokumenty"]);

Problém vyřešil a začal jsem se dostat moje výsledky.

Pak jsem přidal operátor CONTAINS do směsi a zlomil znovu. Ukazuje se, že operátor CONTAINS, Co lze říci, nefunguje s názorem stejným způsobem jako jednodušší GEQ / LEQ operátory. Jsem udělal nějaké vyhledávání a zjistil, že ViewAttributes dotazu by měla být nastavena na "Rekurzivní", stejně jako v:

oQuery.ViewAttributes = "Rozsah = "Recursive"";

To vyřešil problém pro obsahuje. Vlastně, to také vyřešil můj původní problém hledání a pokud byl zadán rekurzivní atribut poprvé, Já bych se do problematiky znovu spustit.

Skutečnost, že podle zobrazení SPQuery funguje u některých operátorů (GEQ/LEQ) a jiné ne (OBSAHUJE), spolu s tím, že ukazatele KPI nezdá se, že práci vůbec s obsahující složku dokumentů knihovny vede mě věřit, že SPQuery má nějaké problémy, ortogonalita.

Zvláštní poděkování:

  • Dobrý lidi na U2U a nástroj pro dotazy na jejich.
  • Michael Hoffer je skvělá "učení se praxí" blogu, Komentáře a reakce.

</Konec>

Přihlásit se na mém blogu!

3 myšlenky na „Řešení: SPQuery neprohledává složky

  1. Beze jména

    http://www.batteryfast.co.uk/asus/w3v.htm baterie ASUS w3v,
    http://www.batteryfast.co.uk/asus/w3000a.htm baterie ASUS w3000a,
    http://www.batteryfast.co.uk/asus/w3000.htm baterie ASUS w3000,
    http://www.batteryfast.co.uk/asus/w3000v.htm baterie ASUS w3000v,
    http://www.batteryfast.co.uk/asus/a31-s5.htm baterie ASUS a31-s5,
    http://www.batteryfast.co.uk/asus/a32-s5.htm baterie ASUS a32-s5,
    http://www.batteryfast.co.uk/asus/s52n.htm baterie ASUS s52n,
    http://www.batteryfast.co.uk/asus/s5000.htm baterie ASUS s5000,
    http://www.batteryfast.co.uk/asus/s5200n.htm baterie ASUS s5200n,
    http://www.batteryfast.co.uk/asus/s5n.htm baterie ASUS s5n,
    http://www.batteryfast.co.uk/asus/90-naa1b1000.htm baterie ASUS 90-naa1b1000,
    http://www.batteryfast.co.uk/asus/s2691061.htm baterie ASUS s2691061,
    http://www.batteryfast.co.uk/asus/a42-v6.htm baterie ASUS a42-v6,
    http://www.batteryfast.co.uk/asus/a32-u5.htm baterie ASUS a32-u5,
    http://www.batteryfast.co.uk/asus/u5f.htm baterie ASUS u5f,
    http://www.batteryfast.co.uk/asus/u5a.htm baterie ASUS u5a,
    http://www.batteryfast.co.uk/asus/u5f.htm baterie ASUS u5f,
    http://www.batteryfast.co.uk/asus/u5.htm baterie ASUS u5,
    http://www.batteryfast.co.uk/compaq/nw8000.htm baterie Compaq nw8000,
    http://www.batteryfast.co.uk/compaq/nc8000.htm baterie Compaq nc8000,
    http://www.batteryfast.co.uk/compaq/v1000.htm baterie Compaq v1000,
    http://www.batteryfast.co.uk/compaq/nc6000.htm baterie Compaq nc6000,
    http://www.batteryfast.co.uk/compaq/nx5000.htm baterie Compaq nx5000,
    http://www.batteryfast.co.uk/compaq/n600.htm baterie Compaq n600,
    http://www.batteryfast.co.uk/compaq/n600c.htm baterie Compaq n600c,
    http://www.batteryfast.co.uk/compaq/n610c.htm baterie Compaq n610c,
    http://www.batteryfast.co.uk/compaq/n610v.htm baterie Compaq n610v,
    http://www.batteryfast.co.uk/compaq/n620c.htm baterie Compaq n620c,
    http://www.batteryfast.co.uk/compaq/e500.htm baterie Compaq e500,
    http://www.batteryfast.co.uk/compaq/e500s.htm baterie Compaq e500s,
    http://www.batteryfast.co.uk/compaq/v300.htm baterie Compaq v300,
    http://www.batteryfast.co.uk/compaq/v500.htm baterie Compaq v500,
    http://www.batteryfast.co.uk/compaq/pp2060.htm baterie Compaq pp2060,
    http://www.batteryfast.co.uk/compaq/nx9000.htm baterie Compaq nx9000,
    http://www.batteryfast.co.uk/compaq/nx9005.htm baterie Compaq nx9005,
    http://www.batteryfast.co.uk/compaq/nx9010.htm baterie Compaq nx9010,
    http://www.batteryfast.co.uk/compaq/nx9020.htm baterie Compaq nx9020,
    http://www.batteryfast.co.uk/compaq/n110.htm baterie Compaq n110,
    http://www.batteryfast.co.uk/compaq/n110s.htm baterie Compaq n110s,
    http://www.batteryfast.co.uk/compaq/pp2101x.htm baterie Compaq pp2101x,
    http://www.batteryfast.co.uk/compaq/presario-2100.htm Compaq presario 2100 baterie,
    http://www.batteryfast.co.uk/compaq/ze4000.htm baterie Compaq ze4000,
    http://www.batteryfast.co.uk/compaq/f4809a.htm baterie Compaq f4809a,
    http://www.batteryfast.co.uk/compaq/f4812a.htm baterie Compaq f4812a,
    http://www.batteryfast.co.uk/dell/inspiron-700m.htm Dell inspiron 700m baterie,
    http://www.batteryfast.co.uk/dell/inspiron-710m.htm Dell inspiron 710m baterie,
    http://www.batteryfast.co.uk/dell/latitude-x200.htm baterie Dell latitude x 200,
    http://www.batteryfast.co.uk/dell/8u443.htm Dell 8u443 baterie,
    http://www.batteryfast.co.uk/dell/312-0058.htm Společnost Dell 312-0058 baterie,

Zanech odpověď

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *