none
Probleminha com Relacionamento de Listas no sharepoint 2007. E agora? RRS feed

  • Pergunta

  • Olá,
    Tenho um probleminha maneiro de ser resolvido.

    Tenho duas listas. A lista Aluno e a lista Curso.
    A lista Aluno possui um campo de consulta para a lista Curso.
    A lista Curso possui as colunas ID e NomeCurso, e a lista Aluno possui os campos ID, NomeAluno e NomeCurso.
    A coluna NomeCurso é do tipo consulta e está relacionado com o campo NomeCurso da lista Curso.
    Até aí tudo bem.

    O problema que estou tendo aqui é que não consigo pegar o ID do Curso da lista Curso através de seu relacionamento com a lista Aluno.
    Isto é preciso por que posso ter mais de um curso com o mesmo nome (É isso mesmo).
    Aí para poder diferenciá-los na lista Aluno preciso de um identificador.

    Como faço para pegar o ID do Curso no meu relacionamento?

    Tentei a seguinte estratégia:
    Criei uma nova coluna na lista Aluno de nome IDCurso.
    Criei então um workFlow para preencher esta coluna IDCurso com o valor do ID da lista Curso que tenha o mesmo nome de Curso escolhido no campo de consulta.
    Isso funciona para cursos que não se repetem na lista curso.
    Agora se existirem mais de um curso com o mesmo nome o workflow trás o primeiro ID da lista retornada. E isso não faz o que preciso, ou seja, trazer o id certo da lista.

    Alguém sabe como posso fazer isto?
    Obrigado

    k2rto4-Pb - Analista SharePoint

    sexta-feira, 15 de março de 2013 12:33

Respostas

  • Olá Fabian,
    Isso seria uma boa, assim os usuários saberiam qual Curso selecionar no campo consulta.

    Complementado meu caso:

    Tenhos as duas listas Aluno e Curso.
    A lista Aluno teve seu DispForm customizado.

    Agora o DispForm possui uma linha ao fim do form com um link para a lista Curso.
    Este link leva consigo o parâmetro NomeCurso com ele. Ficou algo parecido com isto:
    http://meuserver/sites/facul/Lists/Curso/AllItems.aspx?NomeCurso={NomeDoCurso}

    Aí quando o usuário clica no link o mesmo vai para a página AllItems de curso.
    Esta página da lista Curso está preparada para filtrar os valores de acordo com o nome do curso.

    Isso funciona quando temos apenas cursos com um único nome.
    Mas quando o nome do curso existe para mais de um curso, a visão não filtra corretamente o curso desejado.

    Para resolver isto fiz a seguinte alteração:

    1º No DispForm em vez de mandar o nome do curso mando agora o id do item da lista Aluno.
    2º Na visão AllItems da lista Curso fiz:
    2.1º Converti a visão em Exibição de Dados XSLT.
    2.2º Alterei a tag SelectCommand da seguinte forma:
    2.2.1º Adicionei LookupId='TRUE' <FieldRef Name ="MeuCampo"
    2.2.2º Alterei o Type do valor do meu campo para Lookup

    A query dentro da tag SelectCommand ficou parecida com isto:

    <Query>
      <Where>
        <Eq>
          <FieldRef Name ="MeuCampo" LookupId="true" />
          <Value Type ="Lookup">
            1
          </Value>
        </Eq>
      </Where>
    </Query> 

    Agora quando o usuário clica no link e o id do item da lista aluno é enviado, a visão exibe apenas os itens realmente RELACIONADOS com a lista aluno.
    Assim resolvi meu problema.

    Obrigado Fabian.

    OBS.: Vou sugerir o complemente do nome do Curso aqui na empresa.
    Abraços


    k2rto4-Pb - Analista SharePoint

    • Marcado como Resposta TI DEV segunda-feira, 18 de março de 2013 16:53
    segunda-feira, 18 de março de 2013 15:27

Todas as Respostas

  • K2rto4,

    Uma forma mais simples de resolver isso eh colocar mais informacoes do curso no nome dele. Ao inves de chamar Curso de SharePoint, chame de Curso de SharePoint - Jan - 2013.

    Ira facilitar a vida de td mundo e imagino que atenda ao requisito. Se nao conseguir aprovar isso, vc tera bastante trabalho.


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br

    sexta-feira, 15 de março de 2013 21:33
    Moderador
  • Olá Fabian,
    Isso seria uma boa, assim os usuários saberiam qual Curso selecionar no campo consulta.

    Complementado meu caso:

    Tenhos as duas listas Aluno e Curso.
    A lista Aluno teve seu DispForm customizado.

    Agora o DispForm possui uma linha ao fim do form com um link para a lista Curso.
    Este link leva consigo o parâmetro NomeCurso com ele. Ficou algo parecido com isto:
    http://meuserver/sites/facul/Lists/Curso/AllItems.aspx?NomeCurso={NomeDoCurso}

    Aí quando o usuário clica no link o mesmo vai para a página AllItems de curso.
    Esta página da lista Curso está preparada para filtrar os valores de acordo com o nome do curso.

    Isso funciona quando temos apenas cursos com um único nome.
    Mas quando o nome do curso existe para mais de um curso, a visão não filtra corretamente o curso desejado.

    Para resolver isto fiz a seguinte alteração:

    1º No DispForm em vez de mandar o nome do curso mando agora o id do item da lista Aluno.
    2º Na visão AllItems da lista Curso fiz:
    2.1º Converti a visão em Exibição de Dados XSLT.
    2.2º Alterei a tag SelectCommand da seguinte forma:
    2.2.1º Adicionei LookupId='TRUE' <FieldRef Name ="MeuCampo"
    2.2.2º Alterei o Type do valor do meu campo para Lookup

    A query dentro da tag SelectCommand ficou parecida com isto:

    <Query>
      <Where>
        <Eq>
          <FieldRef Name ="MeuCampo" LookupId="true" />
          <Value Type ="Lookup">
            1
          </Value>
        </Eq>
      </Where>
    </Query> 

    Agora quando o usuário clica no link e o id do item da lista aluno é enviado, a visão exibe apenas os itens realmente RELACIONADOS com a lista aluno.
    Assim resolvi meu problema.

    Obrigado Fabian.

    OBS.: Vou sugerir o complemente do nome do Curso aqui na empresa.
    Abraços


    k2rto4-Pb - Analista SharePoint

    • Marcado como Resposta TI DEV segunda-feira, 18 de março de 2013 16:53
    segunda-feira, 18 de março de 2013 15:27