The name 'parameters' does not exist in the Current context

Asked

Viewed 3,120 times

1

I have the code below and is giving the following error:

The name 'sql' does not exist in the Current context The name 'parameters' does not exist in the Current context

Can someone please help me? Thank you in advance...

public DataSet PesquisarProtocolos(string usuarioAutenticado, long? codigoProcotolo, int? codigoMenu, string campoPesquisaDinamica, string valorPesquisaDinamica, string periodo, int? mes, int? ano, int? codigoStatus, int? codigoMotivo, int? codigoTipoRemuneracao, int? codigoGrupoContestacao, int? codigoTipoContestacao, int? codigoMotivoContestacao, bool carregarDivergentes, int? perfil = null, string parceirosGestaoCarteira = "", int codigoCargo = 0)
        {
            if ((codigoCargo == 9) || (codigoCargo == 1029) || (codigoCargo == 1030))
            { 
                //vou colocar depois o código
            }
            else if ((codigoCargo == 8) || (codigoCargo == 11)) 
            {
                //vou colocar depois o código
            }
            else
            {
                 string sql = string.Format(@"
                SELECT DISTINCT     
                       C.[COD_PROTOCOLO_CONTESTACAO]
                      ,C.[COD_PROTOCOLO_CONTESTACAO_RELACIONADO]
                      ,C.[QTD_LINHAS_PROCESSADAS]
                      ,C.[QTD_LINHAS_DIVERGENTES]
                      ,(SELECT TOP 1 LOGIN FROM ADM_USUARIO U WHERE U.cod_usuario = C.COD_USUARIO_RESPONSAVEL) [COD_USUARIO_RESPONSAVEL]
                      ,C.[DSC_PERIODO_PAGAMENTO]
                      ,C.[NUM_ANO_PAGAMENTO]
                      ,C.[NUM_MES_PAGAMENTO]
                      ,C.[COD_ESPELHO_ASSOCIACAO]
                     ,C.[COD_TIPO_REMUNERACAO]
                      ,C.[NUM_MES_REFERENCIA]
                      ,C.[NUM_ANO_REFERENCIA]
                      ,C.[COD_PARCEIRO_REFERENCIA]
                      ,C.[DT_CRIACAO]
                      ,C.[DSC_ARQUIVO]
                      ,C.[DT_ATUALIZACAO]
                      ,TR.DESC_TIPO_REMUNERACAO  
                      ,SP.desc_status_processo
                      ,AM.desc_motivo
                      ,DATEDIFF(DAY, HP.DT_HISTORICO, GETDATE()) AS SLA
                      ,P.cnpj_parceiro
                      ,P.nom_razao_social
                      ,E.NUM_MES_COMISSAO
                      ,E.NUM_ANO_COMISSAO
                    ,case when  c.cod_tipo_remuneracao=4 then 'Mensal' else T.desc_tipo_quinzena end AS PERIODO
            FROM [CON_PROTOCOLO_CONTESTACAO] C
            LEFT JOIN REM_ESPELHO E ON E.COD_ESPELHO = CAST(C.COD_ESPELHO_ASSOCIACAO AS BIGINT)
            LEFT JOIN GAC_TIPO_QUINZENA T ON T.cod_tipo_quinzena = E.cod_periodo_Comissao
            INNER JOIN ADM_TIPO_REMUNERACAO TR ON TR.cod_tipo_remuneracao = C.cod_tipo_remuneracao
            INNER JOIN CON_CONTESTACAO_HISTORICO_PROCESSO HP ON HP.COD_PROTOCOLO_CONTESTACAO = C.COD_PROTOCOLO_CONTESTACAO  AND DT_MUDANCA_FILA is null 
            INNER JOIN ADM_STATUS_PROCESSO SP ON SP.cod_status_processo = HP.cod_status_processo
            INNER JOIN ADM_MOTIVO AM ON AM.cod_motivo = HP.COD_MOTIVO
            LEFT JOIN GDC_PARCEIRO P ON P.cod_parceiro = C.COD_PARCEIRO_REFERENCIA
            LEFT JOIN GDC_SEGMENTO SG ON SG.cod_segmento = P.cod_segmento
            LEFT JOIN GDC_CANAL canal ON canal.cod_canal = SG.cod_canal
            LEFT JOIN GDC_CANAL_PERFIL perfil ON perfil.cod_canal_perfil = canal.cod_canal_perfil
        WHERE   
            (C.COD_PROTOCOLO_CONTESTACAO = @COD_PROTOCOLO_CONTESTACAO OR @COD_PROTOCOLO_CONTESTACAO IS NULL)
            AND (perfil.cod_canal_perfil = @PERFIL OR @PERFIL IS NULL)
            AND (
                @LOGIN IS NULL
                OR (COD_USUARIO_RESPONSAVEL IS NULL OR COD_USUARIO_RESPONSAVEL = '')
                OR (COD_USUARIO_RESPONSAVEL IS NOT NULL AND COD_USUARIO_RESPONSAVEL = (SELECT cod_usuario FROM ADM_USUARIO WHERE Login = @LOGIN))
                OR (SELECT COUNT(*) FROM ADM_USUARIO where sit_libera_pedido = 1 AND Login = @LOGIN) = 1)
            AND (@COD_MENU IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (
                    SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO 
                    WHERE COD_MENU = @COD_MENU AND DT_MUDANCA_FILA IS NULL 
                    AND (DATEPART(MONTH,DT_HISTORICO) = @MES OR @MES IS NULL) AND (DATEPART(YEAR,DT_HISTORICO) = @ANO OR @ANO IS NULL) 
                ))
            {0}
            AND (@PERIODO IS NULL  OR @PERIODO = DSC_PERIODO_PAGAMENTO)
            AND (C.COD_TIPO_REMUNERACAO = @COD_TIPO_REMUNERACAO OR @COD_TIPO_REMUNERACAO IS NULL)
            AND (@COD_GRUPO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_GRUPO_CONTESTACAO = @COD_GRUPO_CONTESTACAO))
            AND (@COD_TIPO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_TIPO_CONTESTACAO = @COD_TIPO_CONTESTACAO))
            AND (@COD_MOTIVO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_MOTIVO_CONTESTACAO = @COD_MOTIVO_CONTESTACAO))
            AND (@COD_STATUS IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO WHERE COD_STATUS_PROCESSO = @COD_STATUS AND DT_MUDANCA_FILA IS NULL))
            AND (@COD_MOTIVO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO WHERE COD_MOTIVO = @COD_MOTIVO AND DT_MUDANCA_FILA IS NULL))
            AND (@CARREGAR_DIVERGENTES = 1 OR (@CARREGAR_DIVERGENTES = 0 AND C.COD_PROTOCOLO_CONTESTACAO IN (select cod_protocolo_contestacao from CON_CONTESTACAO_ESPELHO_ITEM where sit_divergente = 0)))
             ", string.IsNullOrEmpty(parceirosGestaoCarteira) ? "" : string.Format("AND P.cod_parceiro IN ({0})", parceirosGestaoCarteira)); ;

            Dictionary<string, object> parametros = new Dictionary<string, object>();
            if (!string.IsNullOrEmpty(valorPesquisaDinamica) && !string.IsNullOrEmpty(campoPesquisaDinamica))
            {
                sql += string.Format("AND (CAST({0} AS VARCHAR(MAX)) LIKE '%' + @VALOR_PESQUISA_DINAMICA + '%')", campoPesquisaDinamica, valorPesquisaDinamica);
                parametros.Add("@VALOR_PESQUISA_DINAMICA", valorPesquisaDinamica);
            }

            sql += "  ORDER BY SLA DESC ";

            parametros.Add("@LOGIN", usuarioAutenticado ?? (object)DBNull.Value);
            parametros.Add("@PERFIL", perfil ?? (object)DBNull.Value);
            parametros.Add("@COD_PROTOCOLO_CONTESTACAO", codigoProcotolo ?? (object)DBNull.Value);
            parametros.Add("@CARREGAR_DIVERGENTES", carregarDivergentes ? 1 : 0);
            parametros.Add("@COD_MENU", codigoMenu ?? (object)DBNull.Value);
            parametros.Add("@PERIODO", periodo ?? (object)DBNull.Value);
            parametros.Add("@MES", mes ?? (object)DBNull.Value);
            parametros.Add("@ANO", ano ?? (object)DBNull.Value);
            parametros.Add("@COD_STATUS", codigoStatus ?? (object)DBNull.Value);
            parametros.Add("@COD_MOTIVO", codigoMotivo ?? (object)DBNull.Value);
            parametros.Add("@COD_TIPO_REMUNERACAO", codigoTipoRemuneracao ?? (object)DBNull.Value);
            parametros.Add("@COD_GRUPO_CONTESTACAO", codigoGrupoContestacao ?? (object)DBNull.Value);
            parametros.Add("@COD_TIPO_CONTESTACAO", codigoTipoContestacao ?? (object)DBNull.Value);
            parametros.Add("@COD_MOTIVO_CONTESTACAO", codigoMotivoContestacao ?? (object)DBNull.Value);

        }

        using (TFPlusDO db = GetConnection<TFPlusDO>())
        {
            return db.Query(sql, parametros);
        }

    }
  • 1

    @GWER Sorry, we both edited at the same time and the system for some reason gave preference to my edition. If you have any other issues to suggest, feel free.

  • 1

    sql is outside the scope of using. I should have declared the sql out of Him, the same with the parametros.

  • @Victorstafusa Thanks for the comment, but my edition was basically the same as yours! Anyway I appreciate the concern, and your issue is great like this. ;)

  • 1

    @Patrick writes an answer on this.

2 answers

2

In C# (and many other languages), there are scopes, that are contexts that delimit the area of action of a variable, for example.

If you try to do

public String Foo(int y, int x) //escopo externo
{
    if (x == y) //escopo interno
    {
        String z = "Igual";
    }
    return z;
}

It will be a mistake, because the z is in a more internal scope than the return.

In C#, a trick you can use to keep this in mind is: everything declared inside the keys cannot be referenced outside the keys.


The problem with your code is that you simply declared the variables sql and parametros in different scopes.

Pull them up to a level above, out of Else, and everything will be ok.

public DataSet PesquisarProtocolos(argumentos...)
{
    String sql;
    Dictionary<string, object> parametros;
}
  • Good view.

1

Do it so it will solve your problem:

*Note that I only enter the variables at the beginning of the method. Depending on your application, you may need to check the variables.

public DataSet PesquisarProtocolos(string usuarioAutenticado, long? codigoProcotolo, int? codigoMenu, string campoPesquisaDinamica, string valorPesquisaDinamica, string periodo, int? mes, int? ano, int? codigoStatus, int? codigoMotivo, int? codigoTipoRemuneracao, int? codigoGrupoContestacao, int? codigoTipoContestacao, int? codigoMotivoContestacao, bool carregarDivergentes, int? perfil = null, string parceirosGestaoCarteira = "", int codigoCargo = 0)
{
    Dictionary<string, object> parametros = new Dictionary<string, object>();
    string sql = string.Empty;
    if ((codigoCargo == 9) || (codigoCargo == 1029) || (codigoCargo == 1030))
    {
        //vou colocar depois o código
    }
    else if ((codigoCargo == 8) || (codigoCargo == 11))
    {
        //vou colocar depois o código
    }
    else
    {
        sql = string.Format(@"
    SELECT DISTINCT     
            C.[COD_PROTOCOLO_CONTESTACAO]
            ,C.[COD_PROTOCOLO_CONTESTACAO_RELACIONADO]
            ,C.[QTD_LINHAS_PROCESSADAS]
            ,C.[QTD_LINHAS_DIVERGENTES]
            ,(SELECT TOP 1 LOGIN FROM ADM_USUARIO U WHERE U.cod_usuario = C.COD_USUARIO_RESPONSAVEL) [COD_USUARIO_RESPONSAVEL]
            ,C.[DSC_PERIODO_PAGAMENTO]
            ,C.[NUM_ANO_PAGAMENTO]
            ,C.[NUM_MES_PAGAMENTO]
            ,C.[COD_ESPELHO_ASSOCIACAO]
            ,C.[COD_TIPO_REMUNERACAO]
            ,C.[NUM_MES_REFERENCIA]
            ,C.[NUM_ANO_REFERENCIA]
            ,C.[COD_PARCEIRO_REFERENCIA]
            ,C.[DT_CRIACAO]
            ,C.[DSC_ARQUIVO]
            ,C.[DT_ATUALIZACAO]
            ,TR.DESC_TIPO_REMUNERACAO  
            ,SP.desc_status_processo
            ,AM.desc_motivo
            ,DATEDIFF(DAY, HP.DT_HISTORICO, GETDATE()) AS SLA
            ,P.cnpj_parceiro
            ,P.nom_razao_social
            ,E.NUM_MES_COMISSAO
            ,E.NUM_ANO_COMISSAO
        ,case when  c.cod_tipo_remuneracao=4 then 'Mensal' else T.desc_tipo_quinzena end AS PERIODO
FROM [CON_PROTOCOLO_CONTESTACAO] C
LEFT JOIN REM_ESPELHO E ON E.COD_ESPELHO = CAST(C.COD_ESPELHO_ASSOCIACAO AS BIGINT)
LEFT JOIN GAC_TIPO_QUINZENA T ON T.cod_tipo_quinzena = E.cod_periodo_Comissao
INNER JOIN ADM_TIPO_REMUNERACAO TR ON TR.cod_tipo_remuneracao = C.cod_tipo_remuneracao
INNER JOIN CON_CONTESTACAO_HISTORICO_PROCESSO HP ON HP.COD_PROTOCOLO_CONTESTACAO = C.COD_PROTOCOLO_CONTESTACAO  AND DT_MUDANCA_FILA is null 
INNER JOIN ADM_STATUS_PROCESSO SP ON SP.cod_status_processo = HP.cod_status_processo
INNER JOIN ADM_MOTIVO AM ON AM.cod_motivo = HP.COD_MOTIVO
LEFT JOIN GDC_PARCEIRO P ON P.cod_parceiro = C.COD_PARCEIRO_REFERENCIA
LEFT JOIN GDC_SEGMENTO SG ON SG.cod_segmento = P.cod_segmento
LEFT JOIN GDC_CANAL canal ON canal.cod_canal = SG.cod_canal
LEFT JOIN GDC_CANAL_PERFIL perfil ON perfil.cod_canal_perfil = canal.cod_canal_perfil
WHERE   
(C.COD_PROTOCOLO_CONTESTACAO = @COD_PROTOCOLO_CONTESTACAO OR @COD_PROTOCOLO_CONTESTACAO IS NULL)
AND (perfil.cod_canal_perfil = @PERFIL OR @PERFIL IS NULL)
AND (
    @LOGIN IS NULL
    OR (COD_USUARIO_RESPONSAVEL IS NULL OR COD_USUARIO_RESPONSAVEL = '')
    OR (COD_USUARIO_RESPONSAVEL IS NOT NULL AND COD_USUARIO_RESPONSAVEL = (SELECT cod_usuario FROM ADM_USUARIO WHERE Login = @LOGIN))
    OR (SELECT COUNT(*) FROM ADM_USUARIO where sit_libera_pedido = 1 AND Login = @LOGIN) = 1)
AND (@COD_MENU IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (
        SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO 
        WHERE COD_MENU = @COD_MENU AND DT_MUDANCA_FILA IS NULL 
        AND (DATEPART(MONTH,DT_HISTORICO) = @MES OR @MES IS NULL) AND (DATEPART(YEAR,DT_HISTORICO) = @ANO OR @ANO IS NULL) 
    ))
{0}
AND (@PERIODO IS NULL  OR @PERIODO = DSC_PERIODO_PAGAMENTO)
AND (C.COD_TIPO_REMUNERACAO = @COD_TIPO_REMUNERACAO OR @COD_TIPO_REMUNERACAO IS NULL)
AND (@COD_GRUPO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_GRUPO_CONTESTACAO = @COD_GRUPO_CONTESTACAO))
AND (@COD_TIPO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_TIPO_CONTESTACAO = @COD_TIPO_CONTESTACAO))
AND (@COD_MOTIVO_CONTESTACAO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_ESPELHO_ITEM WHERE COD_MOTIVO_CONTESTACAO = @COD_MOTIVO_CONTESTACAO))
AND (@COD_STATUS IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO WHERE COD_STATUS_PROCESSO = @COD_STATUS AND DT_MUDANCA_FILA IS NULL))
AND (@COD_MOTIVO IS NULL OR C.COD_PROTOCOLO_CONTESTACAO IN (SELECT COD_PROTOCOLO_CONTESTACAO FROM CON_CONTESTACAO_HISTORICO_PROCESSO WHERE COD_MOTIVO = @COD_MOTIVO AND DT_MUDANCA_FILA IS NULL))
AND (@CARREGAR_DIVERGENTES = 1 OR (@CARREGAR_DIVERGENTES = 0 AND C.COD_PROTOCOLO_CONTESTACAO IN (select cod_protocolo_contestacao from CON_CONTESTACAO_ESPELHO_ITEM where sit_divergente = 0)))
    ", string.IsNullOrEmpty(parceirosGestaoCarteira) ? "" : string.Format("AND P.cod_parceiro IN ({0})", parceirosGestaoCarteira)); ;


        if (!string.IsNullOrEmpty(valorPesquisaDinamica) && !string.IsNullOrEmpty(campoPesquisaDinamica))
        {
            sql += string.Format("AND (CAST({0} AS VARCHAR(MAX)) LIKE '%' + @VALOR_PESQUISA_DINAMICA + '%')", campoPesquisaDinamica, valorPesquisaDinamica);
            parametros.Add("@VALOR_PESQUISA_DINAMICA", valorPesquisaDinamica);
        }

        sql += "  ORDER BY SLA DESC ";

        parametros.Add("@LOGIN", usuarioAutenticado ?? (object)DBNull.Value);
        parametros.Add("@PERFIL", perfil ?? (object)DBNull.Value);
        parametros.Add("@COD_PROTOCOLO_CONTESTACAO", codigoProcotolo ?? (object)DBNull.Value);
        parametros.Add("@CARREGAR_DIVERGENTES", carregarDivergentes ? 1 : 0);
        parametros.Add("@COD_MENU", codigoMenu ?? (object)DBNull.Value);
        parametros.Add("@PERIODO", periodo ?? (object)DBNull.Value);
        parametros.Add("@MES", mes ?? (object)DBNull.Value);
        parametros.Add("@ANO", ano ?? (object)DBNull.Value);
        parametros.Add("@COD_STATUS", codigoStatus ?? (object)DBNull.Value);
        parametros.Add("@COD_MOTIVO", codigoMotivo ?? (object)DBNull.Value);
        parametros.Add("@COD_TIPO_REMUNERACAO", codigoTipoRemuneracao ?? (object)DBNull.Value);
        parametros.Add("@COD_GRUPO_CONTESTACAO", codigoGrupoContestacao ?? (object)DBNull.Value);
        parametros.Add("@COD_TIPO_CONTESTACAO", codigoTipoContestacao ?? (object)DBNull.Value);
        parametros.Add("@COD_MOTIVO_CONTESTACAO", codigoMotivoContestacao ?? (object)DBNull.Value);

    }

    using (TFPlusDO db = GetConnection<TFPlusDO>())
    {
        return db.Query(sql, parametros);
    }

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.