Usuário com melhor resposta
Ignorando Where na consulta camL SPQuery

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é
StringBuildercamQuery = 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();
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
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 -
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 -
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
-