Pergunta

Tenho 2 listas no SharePoint 2010.A Primeira Lista E lista todos os locais.

Na segunda lista H eu uso a primeira lista E como busca por Localização.Todo mês o usuário insere informações na lista H.

A lista E tem (localização)

Lista H has(Locais (pesquisa na lista E), Mês, Inventário, Nome)

Preciso saber qual local NÃO forneceu inventário este mês.

Eu usei .net antes e no SQL a instrução que usei foi

SELECT    E.Canteen_Location
FROM    dbo.v_Location AS E LEFT OUTER JOIN
               dbo.tblInventory AS H ON H.Canteen = E.CanteenNum  And Month=@Month
WHERE (H.Canteen IS NULL)

Agora mudamos para o SharePoint 2010 e não sei se isso é possível.Alguém pode me ajudar com isso?

Larissa

Foi útil?

Solução

Sim, você pode, em seu Joins nó adicionar uma junção com type="LEFT", algo assim:

  <Join Type="LEFT" ListAlias="h">
    <Eq>
      <FieldRef Name="Canteen" RefType="Id" />
      <FieldRef List="v_location" Name="CanteenNum" />
    </Eq>
  </Join>

Aqui está um bom exemplo

Você também pode querer usar LINQ para SharePoint com SPMetal pois isso fornecerá uma sintaxe mais fácil para consultar o SharePoint.

A sintaxe com LINQ ficaria assim:

var query = from e in db.v_location
            join h in db.tblInventory
               on h.Canteen equals e.CanteenNum into sh
            from x in sh.DefaultIfEmpty()
            where h.Canteen == null
            select new {
               e.Canteen_Location
            }; 

Outras dicas

Larisa,

Consulta CAML permite junções LEFT usando <Join> marcação...Ver Junções e Projeções artigo no MSDN...

No Join existe um Type atributo cujo valor pode ser INNER ou LEFT, ver JUNTAR...

Se você não consegue descobrir, posso fornecer sua consulta CAML completa...Avise!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top