none
Workflow, consulta sql RRS feed

  • Pergunta

  • Estou criando um workflow em C#, para executar diariamente. Criei uma entidade chamado New_fornecedor, que teria um conceito de uma entidade acima da account.

    Um fornecedor, pode ter um ou mais empresas.

    Estou com dificuldade para criar a condição ("not exists") uma vez que a mesma não contem na classe:

     

    Como faço uma classe para atender a minha consulta abaixo?

    /*
    
    Grupo de Fornecedores sem nenhuma Filial associada
    
    Quando um grupo de fornecedores existir na base de dados a mais de 7 dias sem nenhuma Filial associada, este deve ser excluído.
    
    Periodicidade: Diária
    
    */
    
    
    
    declare @data as datetime
    
    set @data = dateadd(d,-7,getdate())
    
    
    
    

    select

    F.new_apelido,F

    .*

    from

    cg_mscrm..new_fornecedor F

    where

    not exists (select top 1 0 from cg_mscrm..account A where F.new_fornecedorid = A.new_fornecedor_empresaid

    )

    and

    F.CreatedOn <= @data

     

    --ou poderia ser com a condição abaixo, porem quando crio o left join na queryEntity o mesmo não reconhece a 2º condicao

    select

    F.new_apelido,F.*,A.AccountId

    from

    cg_mscrm..new_fornecedor F

    left

    outer join cg_mscrm..account A on F.new_fornecedorid = A.new_fornecedor_empresaid and F.CreatedOn <= @data

    where

    A.AccountId is

    null


     

     

     

     

    ConditionExpression

     

    quarta-feira, 29 de junho de 2011 14:18

Respostas

  • Olá Moraes,

     

    Acho que seria algo assim:

          var query = new QueryExpression();
          query.EntityName = "new_fornecedor";
          query.ColumnSet = new AllColumns();
          
          var condition = new ConditionExpression();
          condition.AttributeName = "createdon";
          condition.Operator = ConditionOperator.Equal;
          condition.Values = new object[] { "data" };
    
          var link = new LinkEntity();
          link.LinkFromEntityName = "new_fornecedor";
          link.LinkFromAttributeName = "new_fornecedorid";
          link.LinkToEntityName = "account";
          link.LinkToAttributeName = "new_fornecedor_empresaid";
          link.JoinOperator = JoinOperator.LeftOuter;
     
          var filter = new FilterExpression();
          filter.FilterOperator = LogicalOperator.And;
          filter.Conditions = new ConditionExpression[] { condition };
          
          query.Criteria = filter;
          query.LinkEntities = new LinkEntity[] { link };
    

     

    Abs,

     


    Ricardo Alves
    www.ricardoalves.me
    • Sugerido como Resposta RicardoAlves domingo, 3 de julho de 2011 18:15
    • Marcado como Resposta RicardoAlves sábado, 23 de julho de 2011 15:08
    domingo, 3 de julho de 2011 18:15

Todas as Respostas

  • Olá Moraes,

     

    Acho que seria algo assim:

          var query = new QueryExpression();
          query.EntityName = "new_fornecedor";
          query.ColumnSet = new AllColumns();
          
          var condition = new ConditionExpression();
          condition.AttributeName = "createdon";
          condition.Operator = ConditionOperator.Equal;
          condition.Values = new object[] { "data" };
    
          var link = new LinkEntity();
          link.LinkFromEntityName = "new_fornecedor";
          link.LinkFromAttributeName = "new_fornecedorid";
          link.LinkToEntityName = "account";
          link.LinkToAttributeName = "new_fornecedor_empresaid";
          link.JoinOperator = JoinOperator.LeftOuter;
     
          var filter = new FilterExpression();
          filter.FilterOperator = LogicalOperator.And;
          filter.Conditions = new ConditionExpression[] { condition };
          
          query.Criteria = filter;
          query.LinkEntities = new LinkEntity[] { link };
    

     

    Abs,

     


    Ricardo Alves
    www.ricardoalves.me
    • Sugerido como Resposta RicardoAlves domingo, 3 de julho de 2011 18:15
    • Marcado como Resposta RicardoAlves sábado, 23 de julho de 2011 15:08
    domingo, 3 de julho de 2011 18:15
  • O único problema para a solução acima é que eu preciso trazer o campo da link.LinkToEntityName = "account", como nulo.
    terça-feira, 12 de julho de 2011 17:47
  • Moraes,

     

    Na verdade o "account" seria a entidade da outra ponta do Join.

     

    Abs,

     


    Ricardo Alves | www.ricardoalves.me
    quarta-feira, 13 de julho de 2011 13:43