Løsning: SPQuery søger ikke mapper

Denne sidste uge jeg gennemførelsen af en "udvikler" løsning til en klient, der bruger BDC- og SPQuery og løb ind i nogle problemer med at bruge SPQuery mod et dokumentbibliotek, der indeholder mapper. Bundlinjen: tildele "rekursive" til attributten visning af forespørgslen.

Min scenario:

  • På mandag, Jeg uploade et dokument og levere nogle metadata.
  • Den følgende uge, Jeg uploade et nyt dokument. Meget af dette nye dokument metadata er baseret på det dokument, jeg har uploadet på mandag (som vi kalder "hoveddokumentet").
  • Vi har lavet en web service facade, der giver en BDC-venlige interface til listen, så brugerne nemt kan finde mandag dokumentet via en titelsøgning.
  • En BDC-datakolonne giver en brugervenlig grænseflade. (Dette er en del af mit forsøg på at bruge BDC til en mere venlig opslagskolonne).

Den endelige BDC-facade service bruger en forespørgsel som dette for at gøre opslag:

 // Brugt U2U værktøj til at hjælpe med at skabe denne CAML forespørgsel.
      oQuery.Query =
        "<Hvor>";

      Hvis (titleFilter.Length > 0)
        oQuery.Query  =
          "  <Og>";

      oQuery.Query  =
        "    <Og>" +
        "      <Geq>" +
        "        <FieldRef navn =  "DocumentId" />" +
        "        <Værditype =  "Text">" + minId + "</Værdi>" +
        "      </Geq>" +
        "      <LEQ>" +
        "        <FieldRef navn =  "DocumentId" />" +
        "        <Værditype =  "Text">" + maxId + "</Værdi>" +
        "      </LEQ>" +
        "    </Og>";

      Hvis (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Indeholder>" +
          "      <FieldRef navn =  "Title" />" +
          "      <Værditype =  "Text">" + titleFilter + "</Værdi>" +
          "    </Indeholder>" +
          "  </Og>";
      oQuery.Query  =
        "</Hvor>";

Under den indledende fase af udvikling, Indeværende arbejdede stor. Dog, vi indført mapper i mappen til at løse nogle problemer og pludselig, min BDC-picker ville ikke returnerer nogen resultater. Jeg sporede det ned til det faktum, at SPQuery aldrig ville vende tilbage nogen resultater. Vi brugte mapper primært for at tillade flere filer med samme navn til at blive uploadet, men med forskellige metadata. Når filen er uploadet, vi oprette en mappe baseret på listeelementets ID og derefter flytte fil, der (Jeg skrev om, at Her; Vi har haft blandede resultater med denne tilgang, men på hele, det fungerer godt). Brugeren er ligeglad om mapper og faktisk, ikke rigtig forstå at der er nogen mapper. Vi har konfigureret alle visninger på biblioteket for at få vist elementer mapper.

Jeg ramte problemet dobbelt så den tekniske gennemførelse udviklet sig og løst det forskelligt hver gang. Første gang, Jeg var ikke bruge operatoren indeholder i forespørgslen. Uden en indeholder operatør, Jeg var i stand til at løse problemet ved at angive visningen på den SPQuery pause. Istedet for benytter standardkonstruktøren:

SPList.Update() oList = web.Lister["Dokumenter"];

SPQuery oQuery = nye SPQuery();

I stedet brugte jeg en konstruktør, der er angivet en visning:

SPList.Update() oList = web.Lister["Dokumenter"];

SPQuery oQuery = nye SPQuery(oList.Views["Alle dokumenter"]);

At løst problemet og jeg begyndte at få mine resultater.

Jeg tilføjede derefter operatoren indeholder i mikset, og det brød igen. Det viser sig, at operatoren indeholder, så vidt jeg kan fortælle, virker ikke med visningen på samme måde som i en enklere GEQ / LEQ operatører. Jeg gjorde nogle søger og lært at forespørgslens ViewAttributes skal angives til "Rekursiv", som i:

oQuery.ViewAttributes = "Omfang = "Recursive"";

Det løste problemet for indeholder. Faktisk, dette også løst mit oprindelige søgning problem og hvis jeg havde angivet rekursivt attributten første gang, Jeg ikke ville have køre ind på spørgsmålet igen.

Det faktum, at en visningsbaseret SPQuery virker for nogle operatører (GEQ/LEQ) og ikke andre (INDEHOLDER), kombineret med det faktum, at KPI'er ikke synes at arbejde på alle med mappe, der indeholder dokumentet biblioteker fører mig til at tro, at SPQuery har nogle orthogonality spørgsmål.

Særlig tak:

  • De gode folk på U2U og deres forespørgselsværktøj.
  • Michael Hoffer store "læring ved at gøre" blog-indlæg, kommentarer og svar.

</slutningen>

Abonner på min blog!

3 tanker om ”Løsning: SPQuery søger ikke mapper

  1. Intet navn

    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 batteri,
    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 Dell inspiron 700m batteri,
    http://www.batteryfast.co.uk/dell/inspiron-710m.htm Dell inspiron 710m batteri,
    http://www.batteryfast.co.uk/dell/latitude-x200.htm Dell latitude x 200 batteri,
    http://www.batteryfast.co.uk/dell/8u443.htm Dell 8u443 batteri,
    http://www.batteryfast.co.uk/dell/312-0058.htm Dell 312-0058 batteri,

    Svar

Efterlad et svar til Paul Galvin Annuller besvarelse

Din e-mail adresse vil ikke blive offentliggjort. Krævede felter er markeret *