Soluție: SPQuery nu de căutare foldere

În această săptămână am fost punerea în aplicare a trecut o "evoluţie" soluţie pentru un client care utilizează BDC şi SPQuery şi a fugit în unele dificultăţi folosind SPQuery împotriva o bibliotecă de documente care conţin foldere. Linie de fund: atribuie "recursive" să Vezi atributul de interogare.

Scenariul meu:

  • Luni, Am încărcat un document şi furnizarea unor date meta.
  • Săptămâna următoare, Am încărcat un nou document. Mare parte din acest nou document pe meta-date se bazează pe documentul pe care am încărcat pe luni (care o numim "documentul coordonator").
  • Am creat o faţadă de servicii web care oferă o interfaţă de BDC-friendly la listă, astfel încât utilizatorii pot localiza cu uşurinţă că documentul de luni printr-o căutare de titlu.
  • O coloană de date BDC oferă o interfaţă utilizator prietenoasă. (Aceasta este parte a încercarea mea de la utilizarea BDC pentru o coloană de căutare mai prietenos).

Serviciul de fatada BDC finală utilizează o interogare ca acest lucru să facă căutare:

 // Folosite U2U instrument pentru a ajuta la generarea această interogare florin.
      oQuery.Query =
        "<În cazul în care>";

      Dacă (titleFilter.Length > 0)
        oQuery.Query  =
          "  <Şi>";

      oQuery.Query  =
        "    <Şi>" +
        "      <Geq>" +
        "        <FieldRef nume =  "DocumentId" />" +
        "        <Tipul de valoare =  "Text">" + minId + "</Valoarea>" +
        "      </Geq>" +
        "      <LEQ>" +
        "        <FieldRef nume =  "DocumentId" />" +
        "        <Tipul de valoare =  "Text">" + maxId + "</Valoarea>" +
        "      </LEQ>" +
        "    </Şi>";

      Dacă (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Conţine>" +
          "      <FieldRef nume =  "Title" />" +
          "      <Tipul de valoare =  "Text">" + titleFilter + "</Valoarea>" +
          "    </Conţine>" +
          "  </Şi>";
      oQuery.Query  =
        "</În cazul în care>";

În etapa iniţială de dezvoltare, Aceasta a lucrat mare. Cu toate acestea, am introdus folderele în directorul de a rezolva unele probleme şi brusc, meu murături BDC nu ar reveni rezultate. Am urmarit acest lucru până la faptul că SPQuery ar reveni niciodată nici un rezultat. Am folosit foldere în primul rând pentru a permite mai multe fişiere cu acelaşi nume a fi încărcate, dar cu diferite meta-date. Când fişierul este încărcat, vom crea un folder bazat pe ID element listă şi apoi mutaţi fişierul acolo (Am scris despre faptul că aici; le-am avut rezultate mixte cu această abordare, dar pe ansamblu, este de lucru bine). Utilizatorul nu grijă despre dosare şi, de fapt, nu înţeleg cu adevărat că există orice pliant. Am configurat toate punctele de vedere la Biblioteca pentru a afișa elemente indiferent de dosare.

Am lovit de aceasta problema de două ori ca implementarea tehnică a evoluat şi a rezolvat este diferit de fiecare dată. Prima dată, Am fost folosind operatorul de contine în interogare. Fără un operator contine, Am fost în măsură să rezolve problema prin specificarea Vezi pe SPQuery economist. În loc să utilizaţi constructorul implicit:

SPList.Update() OLISTA = web.Liste["Documente"];

SPQuery oQuery = noi SPQuery();

În schimb am folosit un constructor care specifică o:

SPList.Update() OLISTA = web.Liste["Documente"];

SPQuery oQuery = noi SPQuery(oList.Views["Toate documentele"]);

Că rezolvat problema şi am început pentru a obţine rezultatele mele.

Am adaugat apoi operatorul conţine în amestec şi a rupt din nou. Se pare că operatorul contine, măsura în care pot spune, nu funcţionează cu vedere la fel ca un simplu GEQ / Operatorii de LEQ. Am făcut unele căutarea şi am învăţat că interogării ViewAttributes trebuie să fie setat la "Recursiv", ca şi în:

oQuery.ViewAttributes = "Domeniul de aplicare = "Recursive"";

Care a rezolvat problema pentru contine. de fapt, Acest lucru, de asemenea, rezolvat problema mea original Căutaţi şi dacă am avut specificat recursive atribuie prima dată, Nu s-ar am alerga în problema din nou.

Faptul că o SPQuery pe bază de vedere de lucrări pentru unii operatori (GEQ/LEQ) şi alţii nu (CONŢINE), cuplat cu faptul că KPI-uri nu par să lucreze la toate cu folderul care conţine documentul bibliotecile duce mine să cred că SPQuery are unele probleme de ortogonalitate.

Mulţumiri speciale:

  • Buni la U2U şi instrumentul lor de interogare.
  • Michael Hoffer mare "studiu de a face" blog-ul, Comentarii şi răspunsuri.

</scop>

Aboneaza-te la blog-ul meu!

3 gânduri pe "Soluție: SPQuery nu de căutare foldere

  1. Nici un nume

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

    Răspuns

lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate *