Løsning: SPQuery søker ikke mapper

Denne siste uken var jeg implementere en "utvikling" løsning for en klient som bruker BDC og SPQuery og løp inn noen problemer med å bruke SPQuery mot et dokumentbibliotek som inneholder mapper. Bunnlinjen: Tilordne "rekursiv" Vis attributt for spørringen.

Meg filmmanuskriptet:

  • Mandag, Jeg laste opp et dokument og angi noen metadata.
  • Neste uke, Jeg laster opp et nytt dokument. Mye av dette nye dokumentet metadata er basert på dokumentet jeg lastet opp mandag (som vi kaller "hoveddokumentet").
  • Vi har laget en web service fasade som gir en BDC-grensesnitt til listen slik at brukere kan enkelt finne mandag dokumentet via en tittel søk.
  • En BDC-datakolonne gir et brukervennlig grensesnitt. (Dette er en del av mitt forsøk på å bruke BDC for mer vennlig oppslagskolonner).

Siste BDC fasade tjenesten bruker en spørring som dette for å gjøre oppslag:

 // Brukte U2U verktøyet for å hjelpe generere CAML spørringen.
      oQuery.Query =
        "<Der>";

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

      oQuery.Query  = (likhetstegn)
        "    <Og>" +
        "      <GEQ>" +
        "        <FieldRef navn =  "DocumentId" />" +
        "        <Verditype =  "Text">" + minId + "</Verdi>" +
        "      </GEQ>" +
        "      <LEQ>" +
        "        <FieldRef navn =  "DocumentId" />" +
        "        <Verditype =  "Text">" + maxId + "</Verdi>" +
        "      </LEQ>" +
        "    </Og>";

      Hvis (titleFilter.Length > 0)
        oQuery.Query  = (likhetstegn)
          "    <Inneholder>" +
          "      <FieldRef navn =  "Title" />" +
          "      <Verditype =  "Text">" + titleFilter + "</Verdi>" +
          "    </Inneholder>" +
          "  </Og>";
      oQuery.Query  = (likhetstegn)
        "</Der>";

Under den innledende fasen av utviklingen, Denne arbeidet stor. Men, vi introdusert mapper i mappen å løse noen problemer og plutselig, min BDC-velgeren ville ikke returnerer noen resultater. Jeg sporet dette ned til det faktum at SPQuery ville aldri returnere noen resultater. Vi brukte mapper primært for å tillate flere filer med samme navn lastes, men med forskjellige metadata. Når filen er lastet opp, Vi skaper en mappe på listeelementet IDen og deretter flytte filen der (Jeg skrev om det her; Vi har hatt blandede resultater med denne tilnærmingen, men på hele, det fungerer bra). Brukeren ikke bryr seg om mapper og faktisk, ikke forstå at det er noen mapper. Vi har konfigurert alle visningene på biblioteket for å vise elementer uten hensyn til mapper.

Jeg traff dette problemet dobbelt så den tekniske gjennomføringen utviklet seg og løst det annerledes hver gang. Første gang, Jeg bruker ikke operatoren inneholder i spørringen. Uten en inneholder operatør, Jeg klarte å løse problemet ved å angi visningen i SPQuery contructor. Istedet for benytter Standardkonstruktøren:

SPList oList = web.Lister["Dokumenter"];

SPQuery oQuery = nye SPQuery();

Jeg brukte i stedet en konstruktør som angitt en visning:

SPList oList = web.Lister["Dokumenter"];

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

Det løste problemet og jeg begynte å få mine resultater.

Jeg deretter lagt operatoren inneholder inn i blandingen, og ble igjen. Det viser seg at operatoren inneholder, så vidt jeg kan fortelle, fungerer ikke med visningen på samme måte som i en enklere GEQ / LEQ operatører. Jeg did noe forskende og lært at spørringen ViewAttributes bør settes til "Rekursivt", som i:

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

Det løste problemet for inneholder. faktisk, Dette også løst problemet mitt opprinnelige søk og hvis jeg hadde angitt rekursiv attributt første gang, Jeg ville ikke ha kjørt i spørsmålet igjen.

Det faktum at en visningsbasert SPQuery fungerer enkelte leverandører (GEQ/LEQ) og ikke andre (INNEHOLDER), kombinert med det faktum at KPIer ikke synes å arbeide med alle med mappen som inneholder dokumentet biblioteker fører meg til å tro at SPQuery har noen orthogonality problemer.

Spesiell takk:

  • Den gode folk på U2U og deres spørringsverktøyet.
  • Michael Hoffers store "Lær" blogginnlegg, kommentarer og svar.

</slutten>

Abonner på bloggen min!

Technorati Merkelapper: ,

3 tanker om “Løsning: SPQuery søker ikke mapper

  1. Ingen 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

legg igjen et svar

e-postadressen din vil ikke offentliggjøres. Obligatoriske felt er merket *