Lösning: SPQuery söker inte mappar

Förra veckan var jag genomföra en "utvecklas" lösning för en klient som använder BDC- och SPQuery och sprang in vissa svårigheter med att använda SPQuery mot ett dokumentbibliotek som innehåller mapparna. Nedersta raden: tilldela "rekursiv" Visa attributet för frågan.

Mitt scenario:

  • På måndag, Jag ladda upp ett dokument och leverera några meta-data.
  • Följande vecka, Jag laddar upp ett nytt dokument. Mycket av detta nya dokument metadata bygger på det dokument som jag lagt upp på måndag (som vi kallar "samlingsdokumentet").
  • Vi har skapat en web service fasad som tillhandahåller en BDC-gränssnitt i listan så att användare enkelt kan hitta måndag dokumentet via en titel sökning.
  • BDC-datakolumnen ger ett användarvänligt gränssnitt. (Detta är en del av mitt försök att använda BDC för en mer vänlig uppslagskolumn).

Sista BDC-fasad tjänsten använder en fråga som denna för att göra sökningen:

 // Använde U2U verktyg för att hjälpa till att skapa denna CAML query.
      oQuery.Query =
        "<Där>";

      om (titleFilter.Length > 0)
        oQuery.Query  =
          "  <Och>";

      oQuery.Query  =
        "    <Och>" +
        "      <GEQ>" +
        "        <FieldRef namn =  "DocumentId" />" +
        "        <Värde typ =  "Text">" + minId + "</Värde>" +
        "      </GEQ>" +
        "      <LEQ>" +
        "        <FieldRef namn =  "DocumentId" />" +
        "        <Värde typ =  "Text">" + maxId + "</Värde>" +
        "      </LEQ>" +
        "    </Och>";

      om (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Innehåller>" +
          "      <FieldRef namn =  "Title" />" +
          "      <Värde typ =  "Text">" + titleFilter + "</Värde>" +
          "    </Innehåller>" +
          "  </Och>";
      oQuery.Query  =
        "</Där>";

Under det inledande skedet av utveckling, Detta fungerade bra. Men, vi infört mappar i katalogen för att lösa vissa problem och plötsligt, min BDC-picker skulle inte återvända några resultat. Jag spårade det ner till det faktum att SPQuery skulle aldrig återvända några resultat. Vi använde mappar främst för att tillåta flera filer med samma namn till vara belastat upp men med olika meta-data. När filen är uppladdad, Vi skapar en mapp baserade på listan objektets ID och sedan flytta filen där (Jag skrev om att Här; Vi har haft blandade resultat med detta synsätt, men på hela, det fungerar bra). Användaren inte bryr sig om mappar och faktiskt, förstå inte riktigt att det finns några mappar. Vi har konfigurerat alla synpunkter på biblioteket för att visa objekt utan hänsyn till mappar.

Jag slog detta problem två gånger som det tekniska genomförandet utvecklats och löst det annorlunda varje gång. Första gången, Jag var inte med operatorn innehåller i frågan. Utan en innehåller operator, Jag kunde lösa problemet genom att ange vyn på den SPQuery student. Istället för att använda standard konstruktören:

SPList oList = web.Listor["Dokument"];

SPQuery oQuery = nya SPQuery();

Jag använde istället en konstruktor som angav en vy:

SPList oList = web.Listor["Dokument"];

SPQuery oQuery = nya SPQuery(oList.Views["Alla dokument"]);

Som löste problemet och jag började få mina resultat.

Jag la sedan innehåller operatören i mixen och det bröt igen. Det visar sig att operatorn innehåller, så längt som jag kanna berätta, fungerar inte med om på samma sätt som i en enklare GEQ / LEQ operatörer. Jag auktoriserat inte något forskande och lärde sig att frågans ViewAttributes ska anges till "Recursive", som i:

oQuery.ViewAttributes = "Räckvidd = "Recursive"";

Som löste problemet för innehåller. I själva verket, Detta löste också min ursprungliga söka problem och om jag hade specificerat rekursivt attributet första gången, Jag skulle inte ha köra frågan igen.

Det faktum att en Visa-baserade SPQuery fungerar för vissa operatörer (GEQ/LEQ) och inte andra (INNEHÅLLER), tillsammans med det faktum att KPI inte verkar fungera alls med som innehåller mappen dokument bibliotek leder mig att tro att SPQuery har några ortogonalitet frågor.

Särskilt tack:

</slutet>

Prenumerera på min blogg!

3 tankar på "Lösning: SPQuery söker inte mappar

  1. Inget namn

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

    Svar

Lämna ett svar till Paul Galvin Avbryt svar

Din e-postadress kommer inte att publiceras. behövliga fält är markerade *