none
Parâmetros não funcionam, SP não consegue filtrar pelo parâmetros repassados RRS feed

  • Pergunta

  • Bom dia!

    Postei algumas dúvidas aqui e na maioria da vezes consegui a resposta desejada, e por isso sempre sou grato a vocês. Bom, mas o que me levou aqui novamente, é que assumi a responsabilidade de dar manutenção em um novo sistema, onde existe uma consulta, que possui alguns parâmetros, porém estes não estão funcionando como deveriam, aliás, nem estão funcionando...

    Trata-se de um relatório de crítica de processos jurídicos, onde usuário tem a opção de escolher por:

    - Gerência
    -Agência
    -Matéria
    -Relatório(Tipo de crítica ou inconsistência)

    O usuário escolhe essas opções em uma página ASP, que passa somente números para stored procedure (sp_rptCriticaInconsistencias), aí começam meus problemas...
    Em suma, a SP quando é executada traz a base toda e não consegue filtrar pelos parâmetros repassados pelo usuário... Desta forma, peço a vocês um apoio técnico para tentar decifrar onde existe o erro no script...
    Vou postar o script para vocês darem uma olhada e sugestões...
    Agradeço a todos que poderem ajudar, pois meu prazo tá para expirar!!!

     

    Code Block

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO

    ALTER   procedure dbo.sp_rptCriticaInconsistencias
    -- exec sp_rptCriticaInconsistencias 0,5,0,0,0,0,0

     @numSup_Cod integer = null -- GEREG
    ,@numAgn_Cod integer = null -- Agencia
    ,@numAdv_Cod integer = null -- Advogado
    ,@numMat_Cod integer = null -- Materia
    ,@numCom_Cod integer = null -- Comarca
    ,@numAct_Cod integer = null -- Acao
    ,@sinRel_Cod integer = null -- Tipo de relatorio

    as

    create table #tbl01
    (
      [vchtbl_incon]     [varchar]  (50)
     ,[sintbl_gercod]    [smallint]
     ,[vchtbl_gerdes]    [varchar]  (100)
     ,[sintbl_agncod]    [smallint]
     ,[vchtbl_agndes]    [varchar]  (100)
     ,[numtbl_ficha]     [numeric]  (10)
     ,[sintbl_piseq]     [smallint]
     ,[vchtbl_proce]     [varchar]  (50)
    -- ,[chrtbl_colname]   [varchar]  (1000)
    -- ,[vchtbl_name]      [varchar]  (1000)
     ,[sintbl_matcod]    [smallint]
     ,[vchtbl_matdes]    [varchar]  (100)
     
    )

    declare
        @vchSQL varchar(8000)
       ,@vchCab varchar(1000)
       ,@vchPar varchar(1000)
       ,@vchGrp varchar(1000)
       ,@vchStr varchar(8000)

     set @vchSQL = ''
     set @vchCab = ''
     set @vchPar = ''
     set @vchGrp = ''
        set nocount on


    if @numSup_Cod is null or @numSup_Cod = 0 --or @numSup_Cod = '' -- GEREG
    set @numSup_Cod = 999
    if @numAgn_Cod is null or @numAgn_Cod = 0 --or @numAgn_Cod = ''  -- Agencia
    set @numAgn_Cod = 999
    if @numAdv_Cod is null or @numAdv_Cod = 0 --or @numAdv_Cod = ''  -- Advogado
    set @numAdv_Cod = 999
    if @numMat_Cod is null or @numMat_Cod = 0 --or @numMat_Cod = ''  -- Materia
    set @numMat_Cod = 999
    if @numCom_Cod is null or @numCom_Cod = 0 --or @numCom_Cod = ''  -- Comarca
    set @numCom_Cod = 999
    if @numAct_Cod is null or @numAct_Cod = 0 --or @numAct_Cod = ''  -- Acao
    set @numAct_Cod = 999
    if @sinRel_Cod is null or @sinRel_Cod = 0 --or @sinRel_Cod = ''  -- Tipo de relatorio
    set @sinRel_Cod = 999


     -- Cabecalho do Select
     set @vchCab = ' a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome '

     -- Parametros de Pesquisa
     set @vchPar = '  and a.tagi_codigo between case when ' + cast(@numAgn_Cod as char(3)) + ' <> 999 then ' + cast(@numAgn_Cod as char(3)) + ' else 0 end and ' + cast(@numAgn_Cod as char(3))
           + '  and a.tsi_codigo  between case when ' + cast(@numSup_Cod as char(3)) + ' <> 999 then ' + cast(@numSup_Cod as char(3)) + ' else 0 end and ' + cast(@numSup_Cod as char(3))
           + '  and a.tmi_codigo  between case when ' + cast(@numMat_Cod as char(3)) + ' <> 999 then ' + cast(@numMat_Cod as char(3)) + ' else 0 end and ' + cast(@numMat_Cod as char(3))
           + '  and a.tmi_codigo  between case when ' + cast(@numCom_Cod as char(3)) + ' <> 999 then ' + cast(@numCom_Cod as char(3)) + ' else 0 end and ' + cast(@numCom_Cod as char(3))

     -- Agrupamento
     set @vchGrp = '  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome '


    -- Relatorios
    -- Sem Envolvidos
    if @sinRel_Cod = 4 or @sinRel_Cod = 999
       begin
      set @vchSQL = @vchSQL + ' select ''Envolvidos'' as Inconsistência,' + @vchCab
      set @vchSQL = @vchSQL + ' from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq '
         + ' full outer join agencias c on a.tagi_codigo = c.tagi_codigo '
         + ' full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo '
         + ' full outer join materias e on a.tmi_codigo = e.tmi_codigo '
         + ' where b.pl_ficha is null and a.tagi_codigo > 0 '
      set @vchSQL = @vchSQL + @vchPar   
      set @vchSQL = @vchSQL + @vchGrp
       end
     
    -- Sem Advog Vinculado
    if @sinRel_Cod = 1 or @sinRel_Cod = 999
       begin
        if @sinRel_Cod = 999
        begin
             set @vchSQL = @vchSQL + ' union '
           end
     
      set @vchSQL = @vchSQL   + ' select ''Advogado Vinculado'' as Inconsistência,' + @vchCab
      set @vchSQL = @vchSQL + ' from [processos]  a full outer join [advog vinculados] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq '
         + ' full outer join agencias c on a.tagi_codigo = c.tagi_codigo '
         + ' full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo '
         + ' full outer join materias e on a.tmi_codigo = e.tmi_codigo '
         + ' where b.pl_ficha is null and a.tagi_codigo > 0 '
      set @vchSQL = @vchSQL + @vchPar   
      set @vchSQL = @vchSQL + @vchGrp


     end

    -- Cadastro Duplicado
    if @sinRel_Cod = 2 or @sinRel_Cod = 999
       begin
        if @sinRel_Cod = 999
        begin
             set @vchSQL = @vchSQL + ' union '
           end
     
      set @vchSQL = @vchSQL   + ' select ''Cadastro Duplicado'' as Inconsistência,' + @vchCab
      set @vchSQL = @vchSQL + ' from [processos]  a full outer join [processos] b on a.pt_processo=b.pt_processo '
                + ' full outer join agencias c on a.tagi_codigo = c.tagi_codigo '
                       + ' full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo '
         + ' full outer join materias e on a.tmi_codigo = e.tmi_codigo '
                + ' where a.pl_ficha > 0 and a.pi_seq=0 and a.tagi_codigo > 0 or a.pt_processo is null or a.pt_processo = '''''
    --            + '        where a.pl_ficha <> b.pl_ficha and a.pi_seq=0 and a.tagi_codigo > 0 '
      set @vchSQL = @vchSQL + @vchPar   
      set @vchSQL = @vchSQL + @vchGrp + ' having count(b.pl_ficha) > 1 '
       end

    -- Sem CPF_CNPJ
    if @sinRel_Cod = 3 or @sinRel_Cod = 999
       begin
        if @sinRel_Cod = 999
           begin
             set @vchSQL = @vchSQL + ' union '
           end
     
      set @vchSQL = @vchSQL   + ' select ''Cpf/Cnpj'' as Inconsistência,' + @vchCab
      set @vchSQL = @vchSQL + ' from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq '
                       + ' full outer join agencias c on a.tagi_codigo = c.tagi_codigo '
                + ' full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo '
         + ' full outer join materias e on a.tmi_codigo = e.tmi_codigo '
                + ' where (b.et_cpf_cnpj is null or b.et_cpf_cnpj = 0) and a.tagi_codigo > 0 and b.et_nome <> ''Banco da Amazônia S.A.'''
      set @vchSQL = @vchSQL + @vchPar   
      set @vchSQL = @vchSQL + @vchGrp
      
       end

    -- Sem Tramite
    if @sinRel_Cod = 6 or @sinRel_Cod = 999
       begin
        if @sinRel_Cod = 999
           begin
             set @vchSQL = @vchSQL + ' union '
           end

      set @vchSQL = @vchSQL   + ' select ''Tramite'' as Inconsistência,' + @vchCab
      set @vchSQL = @vchSQL + ' from [processos]  a full outer join [tramitacao] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq '
         + ' full outer join agencias c on a.tagi_codigo = c.tagi_codigo '
         + ' full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo '
         + ' full outer join materias e on a.tmi_codigo = e.tmi_codigo '
         + ' where b.pl_ficha is null and a.tagi_codigo > 0 '
      set @vchSQL = @vchSQL + @vchPar   
      set @vchSQL = @vchSQL + @vchGrp

       end

    -- Cadastro Inconsistente
    if @sinRel_Cod = 5 or @sinRel_Cod = 999
       begin
     set @vchStr = ' insert into #tbl01 exec sp_CriticaIncProcessos '
                     + cast(@numSup_Cod as char(3)) + ', ' + cast(@numAgn_Cod as char(3)) + ', '
                     + cast(@numAdv_Cod as char(3)) + ', ' + cast(@numMat_Cod as char(3))+ ', '
                     + cast(@numCom_Cod as char(3)) + ', ' + cast(@numAct_Cod as char(3))+ ', '
                     + cast(@sinRel_Cod as char(3))
        exec(@vchStr)

       end
      if @vchSQL <> ''
         set @vchSQL = @vchSQL + ' order by a.tsi_codigo, a.tagi_codigo, a.pt_processo,a.pl_ficha '

    --select @vchSQL

    if @vchSQL <> ''
       begin
         set @vchSQL = ' insert into #tbl01 ' + @vchSQL
         exec(@vchSQL)
       end

    select * from #tbl01
    group by
    sintbl_gercod
    ,vchtbl_gerdes
    ,sintbl_agncod
    ,vchtbl_agndes
    ,sintbl_matcod
    ,vchtbl_matdes
    ,numtbl_ficha
    ,sintbl_piseq
    ,vchtbl_proce
    ,vchtbl_incon

    order by
    sintbl_gercod
    --,vchtbl_gerdes
    ,sintbl_agncod
    --,vchtbl_agndes
    --,sintbl_matcod
    ,vchtbl_matdes
    ,numtbl_ficha
    ,sintbl_piseq
    ,vchtbl_proce
    ,vchtbl_incon


    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[#tbl01]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
       drop table [dbo].[#tbl01]


    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

     

     

     

     

     

    quarta-feira, 5 de dezembro de 2007 12:55

Respostas


  • Cara me desculpa, mas não pude ler tudo no momento, mas pelo oque me parece você está com problemas, pois a sua SP tá se confundindo com campo '' , ela nao vai entender como '' ou null e vai dar problema mesmo,

    você nao pode mudar ali seu combo no cadastro?..já que precisa meio urgente pode fazer um outro esquema..

    tirar o "Todos" de Value 0 e colocar "Nenhum" ou "Sem Informação" como Value 0, ai depois vc colocaria na sp,
    um ...  is null , 0

    ai ele atribuiria sozinho pra 0 o campo quando nao tivesse informação.

    Você pode deixar setado também para ele carregar direto na opção "nenhum", ou "sem informaçao" , ai necessariamente o usuario não seria Obrigado a escolher nada, pois já estaria setado.


    desculpe, se falei besteira é que só li o tópico por cima, mas como vc ta precisando disso meio urgente, resolvi postar... pode ser que ajude,

    senão da um toque ai .. se nao pode ser isso .. que mais tarde entro com calma  e do uma olhada certinho, e vejo se posso ajudar em algo

    Abraço.

    sexta-feira, 7 de dezembro de 2007 21:23

Todas as Respostas

  • Augusto,

     

    A primeira coisa a se verificar aí são os parâmetros de entrada da procedure. Lembrando que 0 é DIFERENTE de NULL. Sendo assim se quiser filtrar apenas pelo valor que você colocou diferente de 0 então colocar os outros valores com NULL.

    Faça isso e post aqui novamente..

     

    Abraço,

     

    chapolin.rio@gmail.com

     

     

     

    quarta-feira, 5 de dezembro de 2007 15:24
  • Chapolin,

     

    Muito bem lembrado, pois o Null também representa informação para o banco de dados.

    quarta-feira, 5 de dezembro de 2007 16:05
  • Muito obrigado amigos por se interessarem em me ajudar, bom com base no que você falou, achei os seguintes detalhes:

    Se eu mandar rodar a SP do jeito que tá recebo uma msg que o comando está execuatdo com sucesso, o que sabemos que não é bem verdade...


    Fiz vários testes, e constatei que a consulta funciona para todos os combos, desde que o combo (ou melhor o parâmetro) @sinRel_Cod não venha vazio... Isto é, hj a consulta funciona 100% desde que este campo o usuário preencha com alguma coisa, e ele nunca pode deixar vazio...
    Não posso tornar esse campo obrigatório infelizmente...
    Então tenho que dar um jeito de fazê-lo funcionar, rs, bom esse combo no ASP está assim:

    <OPTION value=0>TODOS</option> (onde todos assume valor 999)
    <OPTION value=1>ADVOGADO VINCULADO</option>
    <OPTION value=2>CADASTRO DUPLICADO</option>
    <OPTION value=3>CPF/CNPJ</option>
    <OPTION value=4>ENVOLVIDOS</option>
    <OPTION value=5>INFORMAÇÕES GERAIS</option>
    <OPTION value=6>TRAMITE</option>                              

    Quando faço o teste no sqlserver "exec sp_rptCriticaInconsistencias 0,0,0,0,0,0,4", ele executa legalzinho os comandos, filtra tudo bacaninha, mas quando deixo o campo que recebe @sinRel_Cod vazio, tipo "exec sp_rptCriticaInconsistencias 1,5,0,0,0,0,0"... Pronto, não funciona mais  nenhum parâmetro, queria saber pq isso ocorre? E onde devo dar a "martelada" milagrosa?

    A grande dificuldade tb, é q o código não fui eu que fiz, e to tendo dificuldade para entender a lógica do carinha que montou... E pior, o cara foi demitido e bomba tá na minha mão agora...

    No código ele cria uma tabela temporária, onde dados são adicionados a ela, e por fim ele gera a consulta final...

    Gente, se poderem me ajudar , agardeço muito... Na verdade, se podermos mudar um pouco a lógica na hora de fazer o filtro utilizando os parâmetros já ajuda tb... O que importa é conseguir fazer isso funcionar, hehehe... Já to na minha 2ª noite e não saiu nada...

    Grato,

    Augusto

    quarta-feira, 5 de dezembro de 2007 19:40
  • Chapolin e Junior,

     

    Quando executado a SP " exec sp_rptCriticaInconsistencias 2,0,0,0,0,0,0 " os parametros não funcionam e ainda recebeo a msg abaixo:

     

    Code Block

    Warning: Null value eliminated from aggregate.

     

     

    Porém se vocês notarem, eu faço um tratamento para isso não acontecer, que não está funcionando e ainda não sei o pq?

     

    Se executo exec sp_rptCriticaInconsistencias 2,0,0,0,0,0,4 , a consulta funciona, e os filtros voltam a funcionar normalmente, trata-se do ultimo campo (onde tá 4), trata-se do parametro @sinRel_Cod , que indica qual tipo de inconsistencia acontece nos processos juridicos, ainda não consegui decifrar esse enigama, caso possam me ajudar, eu agradeço muito!

     

    Augusto

    quarta-feira, 5 de dezembro de 2007 19:46
  • Bem Augusto,

     

    Vou dar uma olhada profunda na sua proc com mais calma.. Se eu perceber alguma coisa estranha eu te aviso.

     

    Abraço,

     

    chapolin.rio@gmail.com

    quarta-feira, 5 de dezembro de 2007 20:08
  • Augusto,

     

    Sinistro essa sua proc heim!!!!!!!!!!!! A Bomba sempre estoura pra alguém né?!? srrsrsrsrs

    Cara me faz um favor. Posta a query formada pela proc pra mim.

    Tem um select variável la comentado. Descomenta ele que vai imprimir a query formada e posta aqui!!!!!

     

    Abraço,

     

    chapolin.rio@gmail.com

     

    quarta-feira, 5 de dezembro de 2007 22:08
  •  

    Chapolin,

     

    Passei tudo o que você pediu para o email que você postou aí, gerei as 2 situações, uma com o parametro problema 0 e outro com o parametro 4 (lembrando que ele pode ir de 0 a 5)...

     

    Junior,

     

    Se vc tiver um email para eu repassar o resultado para voce analisar, eu agradeço!

     

    Grato a todos, tomara que possamos "matar" esse problema...

     

    Augusto

    quinta-feira, 6 de dezembro de 2007 12:13
  •  

    Junior e Chapolin,

     

    Montei executando assim:

    Code Block

    exec sp_rptCriticaInconsistencias 3,0,0,0,0,0,0

     

    Warning: Null value eliminated from aggregate.

     

    select 'Envolvidos' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Advogado Vinculado' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [advog vinculados] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Cadastro Duplicado' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [processos] b on a.pt_processo=b.pt_processo  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where a.pl_ficha > 0 and a.pi_seq=0 and a.tagi_codigo > 0 or a.pt_processo is null or a.pt_processo = ''  and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  having count(b.pl_ficha) > 1  union  select 'Cpf/Cnpj' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where (b.et_cpf_cnpj is null or b.et_cpf_cnpj = 0) and a.tagi_codigo > 0 and b.et_nome <> 'Banco da Amazônia S.A.'  and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Tramite' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [tramitacao] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  order by a.tsi_codigo, a.tagi_codigo, a.pt_processo,a.pl_ficha

     

     

    Code Block
    insert into #tbl01  select 'Envolvidos' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Advogado Vinculado' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [advog vinculados] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Cadastro Duplicado' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [processos] b on a.pt_processo=b.pt_processo  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where a.pl_ficha > 0 and a.pi_seq=0 and a.tagi_codigo > 0 or a.pt_processo is null or a.pt_processo = ''  and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  having count(b.pl_ficha) > 1  union  select 'Cpf/Cnpj' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where (b.et_cpf_cnpj is null or b.et_cpf_cnpj = 0) and a.tagi_codigo > 0 and b.et_nome <> 'Banco da Amazônia S.A.'  and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Tramite' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [tramitacao] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  order by a.tsi_codigo, a.tagi_codigo, a.pt_processo,a.pl_ficha

     

     

     

    Passe 3 como codigo da gerencia, o campo problema como 0, onde obtive um erro, e essa query...

     

    Agora fazer assim:

    Code Block

    exec sp_rptCriticaInconsistencias 3,110,0,0,0,0,4

     

    select 'Envolvidos' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  order by a.tsi_codigo, a.tagi_codigo, a.pt_processo,a.pl_ficha

     

     

    Code Block

    insert into #tbl01  select 'Envolvidos' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  order by a.tsi_codigo, a.tagi_codigo, a.pt_processo,a.pl_ficha

     

     

    Acho que é isso, né, Chapolin!!!

     

    Grato por qq ajuda!

    quinta-feira, 6 de dezembro de 2007 17:35
  •  

    Junior e Chapolin,

     

    Montei executando assim:

    Code Block

    exec sp_rptCriticaInconsistencias 3,0,0,0,0,0,0

     

    Warning: Null value eliminated from aggregate.

     

    select 'Envolvidos' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Advogado Vinculado' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [advog vinculados] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Cadastro Duplicado' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [processos] b on a.pt_processo=b.pt_processo  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where a.pl_ficha > 0 and a.pi_seq=0 and a.tagi_codigo > 0 or a.pt_processo is null or a.pt_processo = ''  and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  having count(b.pl_ficha) > 1  union  select 'Cpf/Cnpj' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where (b.et_cpf_cnpj is null or b.et_cpf_cnpj = 0) and a.tagi_codigo > 0 and b.et_nome <> 'Banco da Amazônia S.A.'  and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Tramite' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [tramitacao] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  order by a.tsi_codigo, a.tagi_codigo, a.pt_processo,a.pl_ficha

     

     

    Code Block
    insert into #tbl01  select 'Envolvidos' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Advogado Vinculado' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [advog vinculados] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Cadastro Duplicado' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [processos] b on a.pt_processo=b.pt_processo  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where a.pl_ficha > 0 and a.pi_seq=0 and a.tagi_codigo > 0 or a.pt_processo is null or a.pt_processo = ''  and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  having count(b.pl_ficha) > 1  union  select 'Cpf/Cnpj' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where (b.et_cpf_cnpj is null or b.et_cpf_cnpj = 0) and a.tagi_codigo > 0 and b.et_nome <> 'Banco da Amazônia S.A.'  and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  union  select 'Tramite' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [tramitacao] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  order by a.tsi_codigo, a.tagi_codigo, a.pt_processo,a.pl_ficha

     

     

     

    Passe 3 como codigo da gerencia, o campo problema como 0, onde obtive um erro, e essa query...

     

    Agora fazer assim:

    Code Block

    exec sp_rptCriticaInconsistencias 3,110,0,0,0,0,4

     

    select 'Envolvidos' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 999 <> 999 then 999 else 0 end and 999  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  order by a.tsi_codigo, a.tagi_codigo, a.pt_processo,a.pl_ficha

     

     

    Code Block

    insert into #tbl01  select 'Envolvidos' as Inconsistência, a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  from [processos]  a full outer join [envolvidos] b on a.pl_ficha=b.pl_ficha and a.pi_seq=b.pi_seq  full outer join agencias c on a.tagi_codigo = c.tagi_codigo  full outer join superintendencias d on a.tsi_codigo = d.tsi_codigo  full outer join materias e on a.tmi_codigo = e.tmi_codigo  where b.pl_ficha is null and a.tagi_codigo > 0   and a.tagi_codigo between case when 110 <> 999 then 110 else 0 end and 110  and a.tsi_codigo  between case when 3   <> 999 then 3   else 0 end and 3    and a.tmi_codigo  between case when 999 <> 999 then 999 else 0 end and 999  group by a.tsi_codigo, d.tst_nome, a.tagi_codigo, c.tagi_nome, a.pl_ficha, a.pi_seq, a.pt_processo, a.tmi_codigo, e.tmt_nome  order by a.tsi_codigo, a.tagi_codigo, a.pt_processo,a.pl_ficha

     

     

    Acho que é isso, né, Chapolin!!!

     

    Grato por qq ajuda!

    quinta-feira, 6 de dezembro de 2007 17:35

  • Cara me desculpa, mas não pude ler tudo no momento, mas pelo oque me parece você está com problemas, pois a sua SP tá se confundindo com campo '' , ela nao vai entender como '' ou null e vai dar problema mesmo,

    você nao pode mudar ali seu combo no cadastro?..já que precisa meio urgente pode fazer um outro esquema..

    tirar o "Todos" de Value 0 e colocar "Nenhum" ou "Sem Informação" como Value 0, ai depois vc colocaria na sp,
    um ...  is null , 0

    ai ele atribuiria sozinho pra 0 o campo quando nao tivesse informação.

    Você pode deixar setado também para ele carregar direto na opção "nenhum", ou "sem informaçao" , ai necessariamente o usuario não seria Obrigado a escolher nada, pois já estaria setado.


    desculpe, se falei besteira é que só li o tópico por cima, mas como vc ta precisando disso meio urgente, resolvi postar... pode ser que ajude,

    senão da um toque ai .. se nao pode ser isso .. que mais tarde entro com calma  e do uma olhada certinho, e vejo se posso ajudar em algo

    Abraço.

    sexta-feira, 7 de dezembro de 2007 21:23