Marcobolacha Postado 14 de Agosto de 2008 Tópicos Que Criei: 14 Tópicos/Dia: 0.00 Meu Conteúdo: 57 Conteúdo/Dia: 0.01 Reputação: 1 Pontos/Conquistas: 426 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 52 Denunciar Compartilhar Postado 14 de Agosto de 2008 cirei esta trigger e esta funcionando 100% quando ha o faturamento de um pedido somente, quando sao faturados dois ou mais, retorna msg que a subselect esta trazendo mais de um registro. como corrigir? if (select codtmv from inserted) < '1.2' and (select status from inserted) = 'F' begin UPDATE FCFOCOMPL SET CLASSIFICA = (SELECT (sum((cast(c.qmaterial as numeric(10,2))) + (cast(c.pentrega as numeric(10,2))) + (cast(c.qatende as numeric(10,2))))/3) Valor from tmovcompl c (nolock) inner join inserted u (nolock) on (c.idmov = u.idmov and c.codcoligada = u.codcoligada)) where codcfo = (select distinct codcfo from inserted) and codcoligada = (select distinct codcoligada from inserted) end obrigado Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Emanuel Peixoto Postado 14 de Agosto de 2008 Tópicos Que Criei: 1 Tópicos/Dia: 0.00 Meu Conteúdo: 152 Conteúdo/Dia: 0.02 Reputação: 0 Pontos/Conquistas: 770 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 44 Denunciar Compartilhar Postado 14 de Agosto de 2008 (editado) Olá Marco, acredito que a falha esteja na abertura da trigger, na primeira condição(IF). Faz o seguinte: troque a condição -->> if (select codtmv from inserted) < '1.2' and (select status from inserted) = 'F' por um "if exists", que permitirá mais de um valor para comparação da condição. Ficando assim: if exists(select 1 from inserted where codtmv < '1.2' and status= 'F') begin ...... Editado 14 de Agosto de 2008 por Emanuel Peixoto Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Marcobolacha Postado 14 de Agosto de 2008 Tópicos Que Criei: 14 Tópicos/Dia: 0.00 Meu Conteúdo: 57 Conteúdo/Dia: 0.01 Reputação: 1 Pontos/Conquistas: 426 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 52 Autor Denunciar Compartilhar Postado 14 de Agosto de 2008 cara valeu mesmo. so coloquei DISTINCT e funcionou. abraçao! select DISTINCT codtmv from inserted Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Emanuel Peixoto Postado 14 de Agosto de 2008 Tópicos Que Criei: 1 Tópicos/Dia: 0.00 Meu Conteúdo: 152 Conteúdo/Dia: 0.02 Reputação: 0 Pontos/Conquistas: 770 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 44 Denunciar Compartilhar Postado 14 de Agosto de 2008 Lembrese que o distinct só resolveu devido a o retorno do select só ser de um valor do codtmv, sempre retornando 1 registro.BLZ! Em circunstancia diferentes, mesmo com o distinct se for retornado mais de um codtmv, o erro acontecerá novamente. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.