none
Dúvida - Case Nested RRS feed

  • Pergunta

  • Bom dia,

    Eu estou montando uma aplicação aqui onde trabalho, eu estou modificando um GridView, o qual quando vou gravar ele mostra essa frase: A coluna 'DATA_CONCLUSAO' não pertence à tabela 'FASE_PROCESSO'. ( mesmo colocando esse campo para ser utilizado tanto no SELECT e INSERT.).

    //Classe Fase Processo.
    sql = "SELECT FAS.ID_FASE, ";
    sql += "USU.NOME AS CRIADO_POR, ";
    sql += "DEP.NOME_DEPARTAMENTO AS RESPONSAVEL, ";
    sql += "ETA.NOME_ETAPA AS ETAPA, ";
    sql += "CONVERT(VARCHAR, FAS.DATA_CRIACAO, 103) AS DATA_CRIACAO, ";
    sql += "CONVERT(VARCHAR, FAS.DATA_PREVISTA, 103) AS DATA_PREVISTA, ";
    sql += "CASE ";
    sql += " WHEN FAS.DATA_CANCELAMENTO IS NOT NULL THEN 'Cancelada - ' + USC.NOME "; //Alterado Milton Honji - 11/05/16 - Para colocar o nome do usuário logado que cancelou a ação.
    sql += " WHEN FAS.DATA_CANCELAMENTO IS NOT NULL THEN 'Cancelada - ' + USU.NOME ";
    sql += " ELSE ISNULL(CONVERT(VARCHAR, FAS.DATA_CONCLUSAO, 103), '') ";
    sql += "END DATA_CONCLUSAO,  ";
    sql += "CASE ";
    sql += " WHEN FAS.DATA_CANCELAMENTO IS NULL THEN ";
    sql += " CASE ";
    sql += " WHEN FAS.DATA_CONCLUSAO IS NOT NULL THEN USC.NOME ";
    sql += " ELSE '' ";  
    sql += " END ";
    sql += " ELSE '' ";  
    sql += "END CONCLUIDO_POR ";
    sql += "FROM DBO.PROCESSO_FASE FAS ";
    sql += "JOIN DBO.ETAPA ETA ON FAS.ID_ETAPA = ETA.ID_ETAPA ";
    sql += "JOIN DBO.DEPARTAMENTO DEP ON ETA.ID_DEPARTAMENTO = DEP.ID_DEPARTAMENTO ";
    sql += "JOIN USUARIO USU ON FAS.ID_USUARIO = USU.ID ";
    sql += "LEFT JOIN USUARIO USC ON FAS.ID_USUARIO_CONCLUIDO = USC.ID ";
    sql += "WHERE FAS.ID_PROCESSO = @ID_PROCESSO ";
    sql += "ORDER BY FAS.DATA_CONCLUSAO ";

    SqlCommand selectCommand = new SqlCommand(sql);

    try
    {
    // Execução do comando de pesquisa de registros
    selectCommand.Parameters.Add ("@ID_PROCESSO", SqlDbType.Int, 4, "ID_PROCESSO").Value = idProcesso;

    dataManager.ExecuteQuery(ref selectCommand, ref dstTemp, "FASE_PROCESSO");

    return dstTemp;
    }
    catch(Exception ex)
    {
    throw new Exception(ex.Message);
    }
    finally
    {
    dstTemp.Dispose();
    selectCommand.Dispose();
    }
    }

    quinta-feira, 12 de maio de 2016 14:32

Respostas

  • Então Milton, no "ISNULL(CONVERT(VARCHAR, FAS.DATA_CONCLUSAO, 103), '')", o campo DATA_CONCLUSAO não existe. Veja no banco de dados se de fato existe esse campo na tabela PROCESSO_FASE.

    O problema não é o CASE, mas que na tabela não tem esse campo com esse nome. Confirma se vc n excluiu essa coluna ou criou com outro nome ...

    quinta-feira, 12 de maio de 2016 17:35

Todas as Respostas

  • Então Milton, no "ISNULL(CONVERT(VARCHAR, FAS.DATA_CONCLUSAO, 103), '')", o campo DATA_CONCLUSAO não existe. Veja no banco de dados se de fato existe esse campo na tabela PROCESSO_FASE.

    O problema não é o CASE, mas que na tabela não tem esse campo com esse nome. Confirma se vc n excluiu essa coluna ou criou com outro nome ...

    quinta-feira, 12 de maio de 2016 17:35
  • Boa tarde SammuelMiranda,

    Ainda tem esse campo DATA_CONCLUSAO, não foi apagado.


    quinta-feira, 12 de maio de 2016 18:34