Solució: SPQuery no busca carpetes

Aquesta setmana passada jo estava aplicant una "evolució" solució per a un client que utilitza BDC i SPQuery i corria amb algunes dificultats per utilitzar el SPQuery contra una biblioteca de documents que contenen les carpetes. Bottom line: Assigna recursiva"" a l'atribut de vista de la consulta.

El meu escenari:

  • El dilluns, Puc pujar un document i proporcionar algunes dades meta.
  • La setmana següent, Carregar un nou document. Gran part de metadades d'aquest nou document es basa en el document que he pujat el dilluns (que anomenem la "document mestre").
  • Hem creat una façana de servei web que proporciona una interfície de BDC-friendly a la llista de manera que els usuaris poden fàcilment localitzar aquell document de dilluns mitjançant una recerca de títol.
  • Una columna de dades del servei BDC proporciona una interfície d'usuari amigable. (Això és part del meu intent en l'ús BDC per a una columna de cerca més amistós).

El servei de façana BDC final utilitza una pregunta semblant a això per fer la consulta:

 // Utilitza l'eina de U2U per ajudar en la generació d'aquesta consulta CAML.
      oQuery.Query =
        "<On>";

      Si (titleFilter.Length > 0)
        oQuery.Query   =
          "  <I>";

      oQuery.Query   =
        "    <I>" +
        "      <Geq>" +
        "        <Nom de FieldRef =  "DocumentId" />" +
        "        <Valor de tipus =  "Text">" + minId + "</Valor>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <Nom de FieldRef =  "DocumentId" />" +
        "        <Valor de tipus =  "Text">" + maxId + "</Valor>" +
        "      </Leq>" +
        "    </I>";

      Si (titleFilter.Length > 0)
        oQuery.Query   =
          "    <Conté>" +
          "      <Nom de FieldRef =  "Title" />" +
          "      <Valor de tipus =  "Text">" + titleFilter + "</Valor>" +
          "    </Conté>" +
          "  </I>";
      oQuery.Query   =
        "</On>";

Durant la primera etapa de desenvolupament, Això treballava gran. No obstant això, introduíem carpetes al directori per resoldre alguns problemes i de sobte, meu selector BDC no obtindreu cap resultat. Això em fa un seguiment fins el fet que el SPQuery tornaria mai cap resultat. Hem utilitzat les carpetes principalment per permetre que múltiples fitxers amb el mateix nom per a ser carregat però amb diferents meta dades. Quan es carrega l'arxiu, podem crear una carpeta basat en ID de l'element llista i llavors moure l'arxiu allà (Jo vaig escriure sobre això aquí; hem tingut resultats mixtos amb aquest enfocament, però tot el, està funcionant bé). L'usuari no es preocupen sobre carpetes i de fet, realment no entenc que hi ha algunes carpetes. Hem configurat totes les vistes a la biblioteca per mostrar els elements sense tenir en compte les carpetes.

Colpeixo aquest problema dues vegades com la implementació tècnica va evolucionar i resoldre-ho diferent cada vegada. La primera vegada, Que no estava utilitzant l'operador conté en la consulta. Sense un operador conté, Vaig ser capaç de resoldre el problema mitjançant l'especificació de la vista sobre contructor de la SPQuery. Enlloc de fer servir el constructor per defecte:

SPList oList = web.Llistes["Documents"];

SPQuery oQuery = nou SPQuery();

En canvi utilitzava un constructor que s'ha especificat una visió:

SPList oList = web.Llistes["Documents"];

SPQuery oQuery = nou SPQuery(oList.Views["Tots els Documents"]);

Que resol el problema i vaig començar a buscar els meus resultats.

Després afegir l'operador conté en la barreja i trencava una altra vegada. Resulta que l'operador conté, fins on puc dir, no funciona amb la vista de la mateixa manera com els un GEQ més simple / Operadors LEQ. Vaig fer algunes cerques i vaig aprendre que ViewAttributes de la consulta haurien de tindre "Recursiva", com a:

oQuery.ViewAttributes = "Abast = "Recursive"";

Que resolia el problema per conté. De fet, Això també resoldre el meu problema de recerca original i si m'havia especificat la recursiu atribuir la primera vegada, Hi hauria no corregut a l'assumpte una altra vegada.

El fet que un SPQuery basada en la vista funciona per alguns operadors (GEQ/LEQ) i no altres (CONTÉ), juntament amb el fet que KPIs no semblen que funcionin en absolut amb la carpeta que conté les biblioteques de document condueix mi per creure que el SPQuery té alguns assumptes ortogonal.

Agraïment especial:

  • La bona gent U2U i les seves eines de consulta.
  • Michael Hoff és genial "aprenent sobre la marxa" entrada de blog, observacions i Respostes.

</final>

Subscriure's al meu blog!

3 comentaris a "Solució: SPQuery no busca carpetes

  1. Sense nom

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

    Resposta

Deixi una contestació

no es publicarà la seva adreça de correu electrònic. Els camps necessaris estan marcats *