none
Dificuldades ao atribuir o valor Nulo para uma coluna através de Componente Script do SSIS. RRS feed

  • Pergunta

  • Senhores,

    Novamente apelo ao vosso conhecimento!

    Estou efetuando uma transformação de dados através do componente Script do SSIS e preciso validar os dados nesta transformação e incluir NULL para alguns casos, conforme abaixo:


            if (Row.EntradaDATAREFERENCIA.Trim().Length == 0 | Convert.ToDecimal(Row.EntradaDATAREFERENCIA) == 0)
                Row.DATAREFERENCIA = null;
            else
                Row.DATAREFERENCIA = Convert.ToDateTime(Row.EntradaDATAREFERENCIA.Substring(0, 4) + "-" + Row.EntradaDATAREFERENCIA.Substring(4, 2) + "-" + Row.EntradaDATAREFERENCIA.Substring(6, 2));

    Porém me apresenta o erro:
             Não é possível converter nulo para 'System.DateTime' por que ele é um tipo de valor não-nulo.


    Alguém sabe a solução pra essa?


    Desde já Grato,
    Marco A. Oliveira

    quarta-feira, 25 de novembro de 2009 12:55

Todas as Respostas

  • Marco,

    Realmente não é possível converter valores de data e hora para Nulo, pois trata-se sempre de valores reais.

    Talvez poderíamos pensar em utilizar uma função algo do IsDate para verificar se o valor é do tipo data, caso contrário você poderia atribuir um valor padrão algo como '01/01/2009'.

    Já pensou em algo assim?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 25 de novembro de 2009 13:03
    Moderador
  • Pedro,

    Cheguei a utilizar um valor padrão para teste, até por isso sei que a importação funciona, mas a existência deste valor padrão compromete bastante a finalidade para a qual esta base é utilizada.

    Não existe nenhuma forma de inserir Nulo na coluna?



    Grato,
    Marco A. Oliveira
    quarta-feira, 25 de novembro de 2009 13:14
  • Marco,

    Em colunas do tipo Date inserir valores, só se você tentar passar o valor como Null.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 25 de novembro de 2009 16:27
    Moderador
  • Pedro,

    Tentei passar de várias formas, convertendo NULL para Datetime, direto NULL, espaço em branco... não aceitou nenhuma destas formas, como sugere que eu faça?



    Obrigado,
    Marco A. Oliveira
    sexta-feira, 27 de novembro de 2009 13:35
  • Marco,

    Você já verificou se esta coluna não esta configurada para não aceitar valores nulos?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sexta-feira, 27 de novembro de 2009 16:29
    Moderador
  • Pedro,

    Sim, para efetuar o teste, inclusive criei uma tabela contento somente o campo em questão para garantir que não haveria erros em outros campos, sendo este único campo com aceitação de nulos.


    Grato,
    Marco A. Oliveira

    segunda-feira, 30 de novembro de 2009 11:28
  • Marco,

    Cara eu estou fazendo vários testes com uma tabela utilizando valores do tipo Data e passando também valores nulo, tanto no SQL Server 2000, 2005 e 2008.

    Esta funcionando sem problemas.

    Também testei no SSIS e não tive erros.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 30 de novembro de 2009 12:56
    Moderador
  • Pedro,

    Pode me passar o Script que está utilizando?


    Grato,
    Marco A. Oliveira
    segunda-feira, 30 de novembro de 2009 12:58
  • Marco,

    Eu fiz um pequeno código, criando uma table, inserindos valores nulos na table.

    Depois no SSIS eu useis esta table e executei um Script Task, foi somente isso.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 1 de dezembro de 2009 11:50
    Moderador