Inquiridor
Passar valor nulo para banco de dados access

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