Usuário com melhor resposta
Workflow, consulta sql

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
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
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
-
-
Moraes,
Na verdade o "account" seria a entidade da outra ponta do Join.
Abs,
Ricardo Alves | www.ricardoalves.me