Solução: SPQuery não pesquisa pastas

Esta semana eu estava implementando um "evoluindo" solução para um cliente que usa o BDC e SPQuery e encontrei alguma dificuldade usando SPQuery contra uma biblioteca de documentos que contêm pastas. Linha inferior: atribuir "recursiva" para o atributo de exibição da consulta.

Meu cenário:

  • Na segunda-feira, Eu carregar um documento e fornecer alguns dados meta.
  • Na semana seguinte, Eu carregar um novo documento. Grande parte meta dados do documento esta nova baseia-se no documento que fiz upload na segunda-feira (que chamamos o "documento principal").
  • Nós criamos uma fachada de serviço web que fornece uma interface de BDC amigável para a lista para que os usuários podem facilmente localizar esse documento segunda-feira através de uma pesquisa de título.
  • Uma coluna de dados BDC fornece uma interface de usuário amigável. (Isto é parte da minha tentativa de usar BDC para uma coluna de pesquisa mais amigável).

O serviço de fachada do BDC final usa uma consulta como esta para fazer a pesquisa:

 // Usado U2U ferramenta para auxiliar na geração esta consulta CAML.
      oQuery.Query =
        "<Onde>";

      se (titleFilter.Length > 0)
        oQuery.Query   =
          "  <E>";

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

      se (titleFilter.Length > 0)
        oQuery.Query   =
          "    <Contém>" +
          "      <Nome FieldRef =  "Title" />" +
          "      <Tipo de valor =  "Text">" + titleFilter + "</Valor>" +
          "    </Contém>" +
          "  </E>";
      oQuery.Query   =
        "</Onde>";

Durante a fase inicial de desenvolvimento, Isso funcionou muito bem. No entanto, Introduzimos pastas no diretório para resolver alguns problemas e de repente, meu seletor de BDC não retorna nenhum resultado. Eu segui isso ao fato de que o SPQuery nunca iria retornar todos os resultados. Usamos pastas principalmente para permitir que vários arquivos com o mesmo nome a ser carregado, mas com diferentes dados meta. Quando o arquivo é carregado, Vamos criar uma pasta com base na identificação do item da lista e em seguida, mova o arquivo lá (Eu escrevi sobre isso here; Já tivemos resultados mistos com esta abordagem, mas em todo o, está funcionando bem). O usuário não se importam sobre pastas e na verdade, realmente não entendo que existem todas as pastas. Temos configurado todos os pontos de vista da biblioteca para mostrar itens sem considerar pastas.

Eu bati esse problema duas vezes como a execução técnica evoluiu e resolvido isso de forma diferente cada vez. A primeira vez, Eu não estava usando o operador CONTAINS na consulta. Sem um operador CONTAINS, Eu era capaz de resolver o problema, especificando o modo de exibição contructor do SPQuery. Em vez de usar o construtor padrão:

SPList t: Microsoft.SharePoint.SPList oList = web.Listas["Documentos"];

SPQuery oQuery = Novo SPQuery();

Em vez disso usei um construtor que especificou uma vista:

SPList t: Microsoft.SharePoint.SPList oList = web.Listas["Documentos"];

SPQuery oQuery = Novo SPQuery(oList.Views["Todos os documentos"]);

Isso resolveu o problema e comecei a receber meus resultados.

Em seguida, adicionei o operador CONTAINS na mistura e quebrou novamente. Verifica-se que o operador CONTAINS, tanto quanto eu posso dizer, Não funciona com a vista da mesma forma que a um simples GEQ / Operadores LEQ. Eu fiz alguma pesquisa e aprendi que ViewAttributes a consulta deve ser definido como "Recursiva", como em:

oQuery.ViewAttributes = "Escopo = "Recursive"";

Isso resolveu o problema para CONTAINS. Na verdade, Isto também resolveu o meu problema de pesquisa original e se eu tivesse especificado o recursivo atributo pela primeira vez, Eu não encontraria com a questão novamente.

O fato de que uma visão-baseada SPQuery funciona para alguns operadores (GEQ/LEQ) e outros não (CONTÉM), juntamente com o fato de que os KPIs não parecem trabalhar em conjunto com pasta contendo o documento bibliotecas conduz me acreditar que SPQuery tem alguns problemas de ortogonalidade.

Agradecimentos especiais:

  • O pessoal da R22 e sua ferramenta de consulta.
  • Grande de Michael Hoffer "aprender fazendo" post do blog, Comentários e respostas.

</fim>

Subscreva ao meu blog!

3 pensamentos "Solução: SPQuery não pesquisa pastas

  1. Sem nome

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

    Resposta

Deixar uma resposta

seu endereço de e-mail não será publicado. Campos obrigatórios são marcados *