Usuário com melhor resposta
CRM 2011 - Erro ao ordernar uma consulta - QueryExpression

Pergunta
-
Boa noite a todos.
Não estou conseguindo ordernar uma consulta para campos de entidades que estão relacionadas a entidade principal.
Segue exemplo de código:
QueryExpression query = new QueryExpression("account");
query.Distinct = true;
query.ColumnSet.AllColumns = true;
query.Criteria = new FilterExpression();query.LinkEntities.Add(new LinkEntity("account", "salesorder", "accountid", "customerid", JoinOperator.Inner));
query.LinkEntities[query.LinkEntities.Count - 1].Columns.AddColumns("ordernumber");
query.Orders.Add(new OrderExpression("accountid", OrderType.Ascending));
query.LinkEntities[query.LinkEntities.Count - 1].EntityAlias = "salesorder";
query.Orders.Add(new OrderExpression("salesorder.ordernumber", OrderType.Ascending));var resultado = RetrieveMultiple(query);
Quando executo o sistema apresenta erro dizendo que o campo "salesorder.ordernumber" não existe na entidade "account".
Será que o QueryExpression só permite ordernar campos da entidade principal?
- Editado FrCosta sexta-feira, 13 de julho de 2012 14:01
Respostas
-
FrCosta, bom dia.
Ordenação em linked entities não é suportado. Você vai conseguir ordenar apenas pelo campo accounid.
É o mesmo comrtamento quando voce cria uma localização avançcada por exemplo de produtos do pedido e adiciona um campo da entidade produto. repare que na classificação ele não permite classificar por nenhum campo da entidade produto.
Atenciosamente,
Rodrigo Hentz - MCP.MCPS.MCNPS.MCTS.MBSS.MBSP.MCITP
Profile
Blog- Sugerido como Resposta Rodrigo HentzModerator terça-feira, 17 de julho de 2012 12:01
- Marcado como Resposta FrCosta terça-feira, 17 de julho de 2012 18:34
Todas as Respostas
-
FrCosta,
Creio que esteja errando o atributo que linka as entidades, pois dentro de uma salesorder temos um customerid e não um accountid. Outro ponto, seria o uso de fecthXML, pois agora o próprio CRM gera a query para nós, basta abrir um localização avançada e depois exportar.
Att,
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/ -
Obrigado Tiago.
O relacionamento que estou fazendo está correto, pois estou utilizando o campo accountid da entidade account com o campo customerid da entidade salesorder, conforme segue o exemplo abaixo:
query.LinkEntities.Add(new LinkEntity("account", "salesorder", "accountid", "customerid", JoinOperator.Inner));
O problema não está dando no relacionamento e sim quando tento ordernar um campo de uma entidade que está relacionada com a entidade principal da consulta.
Se excluir o código que ordena o campo "ordernumber" da entidade salesorder a consulta é executada com sucesso.
Código que ordena o campo: query.Orders.Add(new OrderExpression("salesorder.ordernumber", OrderType.Ascending));
Vou tentar realizar a mesma consulta pela localização avançada do Dynamics.
-
Tiago,
Tentei realizar a consulta pela localização avançada porém o dynamics não permite realizar a ordenação de um campo da entidade que está relacionada a entidade principal da consulta. Na ordenação aparece apenas os campos que são da entidade principal.
Você conhece outra forma de realizar esta operação?
-
FrCosta,
Você está relacionando ao contrário o correto e salesorder x account e não account x salesorder...
Veja o seu exemplo usando fetchXML:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> <entity name="salesorder"> <attribute name="salesorderid" /> <attribute name="vij_propostaseguradora" /> <attribute name="customerid" /> <order attribute="vij_propostaseguradora" descending="false" /> <order attribute="customerid" descending="false" /> <link-entity name="account" from="accountid" to="customerid" visible="false" link-type="outer" alias="a_92b77a4070bd4d1a82d9fa6ce38df2cc"> <attribute name="emailaddress1" /> </link-entity> </entity> </fetch>
Att,
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/- Sugerido como Resposta Tiago Michelini CardosoMVP, Moderator sexta-feira, 13 de julho de 2012 18:32
- Não Sugerido como Resposta FrCosta sexta-feira, 13 de julho de 2012 19:17
-
-
FrCosta,
Sugeri a você a solução mais indicada, pois poderá usá-la em plugins, custom workflows, jscript, silverlight, por isso pense bem ao usar queryexpression e consulta ao banco. Além de que, a resposta informada funciona 100%.
Conforme eu te disse, está fazendo a associação ao contrário, o seu from é salesorder e não account.
Att,
Tiago Michelini Cardoso MVP - MCC - MCTS
https://tiagomcardoso.wordpress.com/ -
-
FrCosta, bom dia.
Ordenação em linked entities não é suportado. Você vai conseguir ordenar apenas pelo campo accounid.
É o mesmo comrtamento quando voce cria uma localização avançcada por exemplo de produtos do pedido e adiciona um campo da entidade produto. repare que na classificação ele não permite classificar por nenhum campo da entidade produto.
Atenciosamente,
Rodrigo Hentz - MCP.MCPS.MCNPS.MCTS.MBSS.MBSP.MCITP
Profile
Blog- Sugerido como Resposta Rodrigo HentzModerator terça-feira, 17 de julho de 2012 12:01
- Marcado como Resposta FrCosta terça-feira, 17 de julho de 2012 18:34