locked
Passar valor nulo para banco de dados access RRS feed

  • Pergunta

  • Pessoal, bom dia.

    Estou desenvolvendo uma aplicação Silverlight e na minha aplicação eu tenho alguns campos com datas, só que estes campos não são obrigatórios.
    Estou trabalhando com o banco de dados Access, e minhas colunas no banco de dados estão com o formato de Data / hora.
    Como eu não sou obrigado a inserir uma data, eu teria que passar um valor nulo para o banco de dados.

    Consigo fazer a inserção com datas normal, só que quando tento inserir sem preenche as datas ele me retorna o seguinte erro: " Tipo de dados incompatível na expressão de critério"

    Eu vou passar a minha instrução INSERT se alguém conseguir me ajudar eu ficaria muito grato.

    sSQL += " VALUES ('" + objPessoaExterna.Nome + "', '" + objPessoaExterna.DocumentoTipo + "', '" + objPessoaExterna.DocumentoNumero + "', 0,";
                sSQL += "'" + objPessoaExterna.Empresa + "', '" + (!objPessoaExterna.DataNascimento.Equals(null) ? objPessoaExterna.DataNascimento.ToString() : "NULL") + "', '" + objPessoaExterna.Grupo + "', '" + objPessoaExterna.Telefone1 + "', '" + objPessoaExterna.Telefone2 + "',";
                sSQL += "'" + objPessoaExterna.Email + "', '" + objPessoaExterna.Biometria + "', " + objPessoaExterna.ValidaBiometria + ", '" + (!objPessoaExterna.IntegracaoDataInicial.Equals(null) ? objPessoaExterna.IntegracaoDataInicial.ToString() : "NULL") + "', '" + (!objPessoaExterna.IntegracaoDataFinal.Equals(null) ? objPessoaExterna.IntegracaoDataFinal.ToString() : "NULL") + "',";
                sSQL += "'" + (!objPessoaExterna.SegurancaDataInicial.Equals(null) ? objPessoaExterna.SegurancaDataInicial.ToString() : "NULL") + "', '" + (!objPessoaExterna.SegurancaDataFinal.Equals(null) ? objPessoaExterna.SegurancaDataFinal.ToString() : "NULL") + "', '" + (!objPessoaExterna.ExameMedicoDataInicial.Equals(null) ? objPessoaExterna.ExameMedicoDataInicial.ToString() : "NULL") + "', '" + (!objPessoaExterna.ExameMedicoDataFinal.Equals(null) ? objPessoaExterna.ExameMedicoDataFinal.ToString() : "NULL") + "',";
                sSQL += "'" + objPessoaExterna.Complemento1 + "', '" + objPessoaExterna.Complemento2 + "', '" + objPessoaExterna.Complemento3 + "', null, 0, NULL, 0, '', " + objPessoaExterna.PossuiObservacao + ", " + objPessoaExterna.ControleAcesso + ", '" + objPessoaExterna.DataCadastro + "')";

    Minha dúvida era ver se o if que fiz dentro da instrução está correto. são os campos DATANASCIMENTO, INTEGRACAODATAINICIAL, INTEGRACAODATAFINAl.

    Desde já obrigado.

    Atenciosamente.

       
    • Movido Levi Domingos domingo, 21 de outubro de 2012 15:34 (De:C#)
    quinta-feira, 18 de outubro de 2012 12:05

Todas as Respostas

  • Cara, acho que o problema aqui é o tipo de consistência que você faz: objPessoaExterna.DataNascimento.Equals(null) - Na verdade se você instancia um DateTime, ele vai ser == DateTime.MinValue, então acho que você deveria experimentar objPessoaExterna.DataNascimento == DateTime.MinValue - Ou então mudar o tipo da DataNascmiento de DateTime para DateTime? (isso mesmo, com o sinal de interrogação).

    quinta-feira, 18 de outubro de 2012 13:25
  • Já estou fazendo isso !

    quinta-feira, 18 de outubro de 2012 13:58
  • Bom dia,

    Phi, não utilize concatenação em strings para montar seus comandos SQL's e sim "Parameters".

    Para que eu possa te ajudar por favor, poste toda a parte do código que você utiliza para efetuar a inserção e mostrarei como fazer da maneira correta, elem de corrigir esse erro, com a utilização de "Parameters" você evitará mais uma série de problemas.

    Att

    Evandro


    Não há medalha de ouro sem suor e não há sucesso sem trabalho e dedicação!

    quinta-feira, 18 de outubro de 2012 14:48