none
Ignorando Where na consulta camL SPQuery RRS feed

  • Pergunta

  • Boa tarde.

    Alguem sabe me dizer o que pode ser? Estou passando uma SPQuery para o getItems, mas o mesmo está ignorando a cláusula. Ele sempre retorna todos os registros.. Já tentei passar a view, e tb não funcionou.

    Obrigado

    André

    StringBuilder

     

    camQuery = new StringBuilder();

     

     

    SPSite site = new SPSite(Configuracao.Instancia.ObterConfiguracao(Constantes.AppSettings.MOSSSitePortal));

     

     

    SPWeb web = site.OpenWeb(Configuracao.Instancia.ObterConfiguracao(Constantes.AppSettings.MOSSSubSiteFormulario));

     

     

    SPList lista = web.Lists[Constantes.MOSS_LISTA_SOLICITACAO_INTERNACAO];

    camQuery.Append(

     

    "<Query> ");

    camQuery.Append(

     

    " <Where> ");

    camQuery.Append(

     

    " <Contains> ");

    camQuery.Append(

     

    " <FieldRef Name='_x007b_9152f3fd_x002d_e18b_x002d_44ce_x002d_9457_x002d_8792d72aa56b_x007d_' /> ");

    camQuery.Append(

     

    " <Value Type='Text'>" + Param + "</Value> ");

    camQuery.Append(

     

    " </Contains> ");

    camQuery.Append(

     

    " </Where> ");

    camQuery.Append(

     

    "</Query> ");

     

     

    SPQuery query = new SPQuery();

     

    //query.ViewAttributes = "Scope='Recursive'";

     

    //query.RowLimit = 20;

     

     

    SPListItemCollection itens = lista.GetItems(query);

    query.Query = camQuery.ToString();

     

    terça-feira, 2 de fevereiro de 2010 18:03

Respostas

  • Savoia,

    É.. eu tinha imaginado..... rsrsrs...

    Cara..... eu uso bastante essa ferramenta também e não tive problemas, eu vou lhe explicar como eu faço e você pode tentar colocar da mesma forma, pode ser algum espaço em branco na query.

    Bom.... eu faria o seu código da seguinte forma:

    SPSite site = new SPSite(Configuracao.Instancia.ObterConfiguracao(Constantes.AppSettings.MOSSSitePortal)); 
    SPWeb web = site.OpenWeb(Configuracao.Instancia.ObterConfiguracao(Constantes.AppSettings.MOSSSubSiteFormulario)); 
    SPList lista = web.Lists[Constantes.MOSS_LISTA_SOLICITACAO_INTERNACAO]; 
    
    string oCAMLQuery = "<Where><Contains><FieldRef Name='_x007b_9152f3fd_x002d_e18b_x002d_44ce_x002d_9457_x002d_8792d72aa56b_x007d_' /><Value Type='Text'>" + Param + "</Value></Contains></Where>";
    
    SPQuery query = new SPQuery();
    query.Query = oCAMLQuery;
    SPListItemCollection itens = lista.GetItems(query);
    Você pode tentar......

    PS: Eu tirei o termo <Query></Query> de propósito, não é utilizado nesse caso.

    Abraços.... =) .... Qualquer coisa, posta ai.....
    MCTS - Windows Sharepoint Services - Application Development
    • Marcado como Resposta Andre SBC quarta-feira, 3 de fevereiro de 2010 11:39
    terça-feira, 2 de fevereiro de 2010 19:12

Todas as Respostas

  • Savoia,

    Sua cláusula está correta, e não tem nenhum erro aparente no seu código, com exceção de uma coisa....... ponha a linha query.Query = camQuery.ToString(); antes da execução do SPList.GetItems(), mais ou menos dessa forma:

    query.Query = camQuery.ToString();
    SPListItemCollection itens = list.GetItems(query);
    Abraços,

    Espero que consiga.
    MCTS - Windows Sharepoint Services - Application Development
    terça-feira, 2 de fevereiro de 2010 18:53
  • Fala André.

    Então, na verdade já estou fazendo isso. na hora de copiar fiz alguma coisa

     

    SPQuery query = new SPQuery();

    query.Query = camQuery.ToString();


    Na lista mesmo não preciso fazer nada né? O interessante é que crio esta query através do Caml Query Builder, e já retorna só os registros que estou pesquisando.. qd eu copio e colo para dentro da minha classe, acontece isso...

    obrigado

    terça-feira, 2 de fevereiro de 2010 19:05
  • Savoia,

    É.. eu tinha imaginado..... rsrsrs...

    Cara..... eu uso bastante essa ferramenta também e não tive problemas, eu vou lhe explicar como eu faço e você pode tentar colocar da mesma forma, pode ser algum espaço em branco na query.

    Bom.... eu faria o seu código da seguinte forma:

    SPSite site = new SPSite(Configuracao.Instancia.ObterConfiguracao(Constantes.AppSettings.MOSSSitePortal)); 
    SPWeb web = site.OpenWeb(Configuracao.Instancia.ObterConfiguracao(Constantes.AppSettings.MOSSSubSiteFormulario)); 
    SPList lista = web.Lists[Constantes.MOSS_LISTA_SOLICITACAO_INTERNACAO]; 
    
    string oCAMLQuery = "<Where><Contains><FieldRef Name='_x007b_9152f3fd_x002d_e18b_x002d_44ce_x002d_9457_x002d_8792d72aa56b_x007d_' /><Value Type='Text'>" + Param + "</Value></Contains></Where>";
    
    SPQuery query = new SPQuery();
    query.Query = oCAMLQuery;
    SPListItemCollection itens = lista.GetItems(query);
    Você pode tentar......

    PS: Eu tirei o termo <Query></Query> de propósito, não é utilizado nesse caso.

    Abraços.... =) .... Qualquer coisa, posta ai.....
    MCTS - Windows Sharepoint Services - Application Development
    • Marcado como Resposta Andre SBC quarta-feira, 3 de fevereiro de 2010 11:39
    terça-feira, 2 de fevereiro de 2010 19:12
  • Fechou!

    sabia que era alguma coisa simples..rs  agora funcionou!

    valeu

    Abraços
    quarta-feira, 3 de fevereiro de 2010 11:40