Solución: SPQuery no buscar carpetas

Esta última semana estaba implementando una "evolución" solución para un cliente que utiliza el BDC y SPQuery y tuvo alguna dificultad usando SPQuery contra una biblioteca de documentos que contiene carpetas. Línea inferior: asignar "recursiva" para el atributo de vista de la consulta.

Mi escenario:

  • El lunes, I subir un documento y suministrar algunos metadatos.
  • La semana siguiente, Subir un nuevo documento. Mucho de este nuevo documento metadatos se basa en el documento que subí el lunes (que llamamos el "documento maestro").
  • Hemos creado una fachada de servicio web que proporciona una interfaz de BDC respetuoso a la lista para que los usuarios pueden localizar fácilmente ese documento lunes mediante una búsqueda de título.
  • Una columna de datos BDC proporciona una interfaz de usuario amigable. (Esto es parte de mi intento de usar BDC para una columna de búsqueda más amigable).

El servicio final de fachada BDC usa una consulta como ésta para hacer la búsqueda:

 // Utiliza U2U herramienta para asistir en la generación de esta consulta CAML.
      oQuery.Query =
        "<Donde>";

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

      oQuery.Query  =
        "    <Y>" +
        "      <GEQ>" +
        "        <FieldRef nombre =  "DocumentId" />" +
        "        <Tipo de valor =  "Text">" + minId + "</Valor>" +
        "      </GEQ>" +
        "      <Leq>" +
        "        <FieldRef nombre =  "DocumentId" />" +
        "        <Tipo de valor =  "Text">" + maxId + "</Valor>" +
        "      </Leq>" +
        "    </Y>";

      Si (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Contiene>" +
          "      <FieldRef nombre =  "Title" />" +
          "      <Tipo de valor =  "Text">" + titleFilter + "</Valor>" +
          "    </Contiene>" +
          "  </Y>";
      oQuery.Query  =
        "</Donde>";

Durante la etapa inicial de desarrollo, Esto funcionó muy bien. Sin embargo, Hemos introducido las carpetas en el directorio para resolver algunos problemas y de repente, mi selector de BDC no devolver ningún resultado. Un seguimiento hasta el hecho de que el SPQuery nunca devuelve ningún resultado. Utilizamos carpetas principalmente para permitir que varios archivos con el mismo nombre para subir pero con datos diferentes de la meta. Cuando el archivo es cargado, creamos una carpeta basada en ID del elemento de la lista y luego mover el archivo allí (Escribí acerca de eso aquí; Hemos tenido resultados mixtos con este enfoque, pero sobre todo el, está trabajando bien). El usuario no le importa acerca de carpetas y de hecho, realmente no entiendo que hay las carpetas. Hemos configurado todas las vistas de la biblioteca para mostrar los elementos sin carpetas.

Llegué a este problema dos veces como la aplicación técnica evolucionó y solucionado diferente cada vez. La primera vez, Que no estaba usando el operador CONTAINS en la consulta. Sin un operador contiene, Era capaz de resolver el problema especificando la vista en contructor de SPQuery. En lugar de utilizar el constructor predeterminado:

SPList Doc_olist = web.Listas["Documentos"];

SPQuery oQuery = Nuevo SPQuery();

En lugar de ello usé un constructor que especifica una vista:

SPList Doc_olist = web.Listas["Documentos"];

SPQuery oQuery = Nuevo SPQuery(oList.Views["Todos los documentos"]);

Eso resolvió el problema y empezamos a tener mis resultados.

Luego añadí el operador contiene en la mezcla y se rompió otra vez. Resulta que el operador CONTAINS, la medida en que te puedo decir, No funciona con la opinión de la misma manera que la una simple GEQ / Operadores LEQ. Hice algunas búsquedas y aprendió que ViewAttributes de la consulta debe establecerse en "Recursivo", como en:

oQuery.ViewAttributes = "Alcance = "Recursive"";

Resolvió el problema de contiene. En realidad, Esto también solucionar mi problema de búsqueda original y si había especificado la recursiva atribuyen la primera vez, No hubiera huido en el tema nuevo.

El hecho de que un SPQuery basado en vista funciona para algunos operadores (GEQ/LEQ) y no a otros (CONTIENE), junto con el hecho de que no parecen KPI ' s trabajar en todo documento que contiene la carpeta bibliotecas pistas para creer que SPQuery tiene algunos problemas de ortogonalidad.

Agradecimiento especial:

  • La buena gente de U2U y su herramienta de consulta.
  • Michael Hoffer es genial "aprender haciendo" entrada de blog, Comentarios y respuestas.

</final>

Suscribirse a mi blog!

3 pensamientos sobre "Solución: SPQuery no buscar carpetas

  1. Sin nombre

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

    Respuesta

Contesta

su dirección de correo electrónico no será publicada. Los campos necesarios están marcados *