none
Como validar uma data null RRS feed

Respostas

  •                 base.cmd.Parameters.Add(new SqlParameter("@datcus", SqlDbType.DateTime));
                    base.cmd.Parameters["@datcus"].Value = ObjFamcom.datcus;
    
    


     

    Boas,

    Não experimentei, mas aho que vale a pena tentar o seguinte:

    base.cmd.Parameters.Add(new SqlParameter("@datcus", SqlDbType.DateTime));
    base.cmd.Parameters["@datcus"].Value = ObjFamcom.datcus??DBNull.Value;

    ou ainda melhor

    base.cmd.Parameters.AddWithValue("@datcus", ObjFamcom.datcus??DBNull.Value);



     


    Nuno Gomes http://nunogomes.net
    segunda-feira, 6 de fevereiro de 2012 17:59
  • tem um jeito bacana de fazer.. é assim

    if(objData == new DateTime())

    {

         MessageBox.Show("Data vazia!");

    }

    é bom fazer assim porque undependente das configuraçções regionais da maquina funciona perfeitamente.!

    Se foi util não esqueça de marcar ;)

    quinta-feira, 9 de fevereiro de 2012 17:11

Todas as Respostas

  • Kleber,

    Não sei se entendi muito bem a sua pergunta, mas segue um exemplo de código para setar valor nulo em um objeto do tipo DateTime:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                DateTime? dtNascimento = null;
    
                //dtNascimento = DateTime.Now;
    
                if(dtNascimento == null)
                    Console.WriteLine("Data nula!");
                else
                    Console.WriteLine(dtNascimento.ToString());
    
                Console.ReadLine();
            }
        }
    }
    
    Abraço,


    Carlos Eduardo Ferreira
    segunda-feira, 6 de fevereiro de 2012 16:51
  • Boas,

    O tipo DateTime é uma struct pelo que não pode ser nulo.

    Podes no entanto definir o campo como DateTime? ou Nullable<DateTime> e usar como o Carlos indica.


    Nuno Gomes http://nunogomes.net
    segunda-feira, 6 de fevereiro de 2012 16:55
  • Boa tarde:

    Como dito acima, voce pode trabalhar com nullable types:

    Segue link:

    http://www.devmedia.com.br/post-17397-Usando-Nullable-Types-no-C.html

    http://msmvps.com/blogs/cmattos/archive/2009/02/03/tipos-nulos-nullable-types-no-c.aspx


    Consultoria .NET

    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    segunda-feira, 6 de fevereiro de 2012 17:16
  •  Esse é um trecho do codigo.

     Em datcus o valor deve ser salvo como null, porque é um campo que vai ser incrementado depois

     Quando eu tento gravar o registro eu recebo esta seguinte menssagen:

     Erro: Estouro de SqlDateTime. Deve estar entre 1/1/1753 12:00:00 AM e 31/12/9999 11:59:59 PM.

    namespace DAL.Cadastros
    {
        public class Famcom_Dal:BaseDal
        {
            public FamcomInformation InserirFamcom(FamcomInformation ObjFamcom)
            {
                try
                {
                    base.CreateCommand("FAMCOM_Inserir");
    
                    base.cmd.Parameters.Add(new SqlParameter("@famcom", SqlDbType.VarChar));
                    base.cmd.Parameters["@famcom"].Value = ObjFamcom.famcom;
    
                    base.cmd.Parameters.Add(new SqlParameter("@descri", SqlDbType.VarChar));
                    base.cmd.Parameters["@descri"].Value = ObjFamcom.descri;
    
                    base.cmd.Parameters.Add(new SqlParameter("@cusant", SqlDbType.Decimal));
                    base.cmd.Parameters["@cusant"].Value = ObjFamcom.cusant;
    
                    base.cmd.Parameters.Add(new SqlParameter("@cusatu", SqlDbType.Decimal));
                    base.cmd.Parameters["@cusatu"].Value = ObjFamcom.cusatu;
    <br/>                //Esse precisa receber o valor null
                    base.cmd.Parameters.Add(new SqlParameter("@datcus", SqlDbType.DateTime));
                    base.cmd.Parameters["@datcus"].Value = ObjFamcom.datcus;
    
                    base.cmd.Parameters.Add(new SqlParameter("@opecad", SqlDbType.VarChar));
                    base.cmd.Parameters["@opecad"].Value = ObjFamcom.opecad;
    
                    base.cmd.Parameters.Add(new SqlParameter("@opealt", SqlDbType.VarChar));
                    base.cmd.Parameters["@opealt"].Value = ObjFamcom.opealt;
    
                    base.cmd.ExecuteScalar();
    
                    return ObjFamcom;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    base.CloseConecction();
                }
            }
    

    segunda-feira, 6 de fevereiro de 2012 17:20
  • Uma maneira seria voce declarar a data como string no banco e depois para manipular a data voce pode converter ela.
    Consultoria .NET

    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    segunda-feira, 6 de fevereiro de 2012 17:41
  •                 base.cmd.Parameters.Add(new SqlParameter("@datcus", SqlDbType.DateTime));
                    base.cmd.Parameters["@datcus"].Value = ObjFamcom.datcus;
    
    


     

    Boas,

    Não experimentei, mas aho que vale a pena tentar o seguinte:

    base.cmd.Parameters.Add(new SqlParameter("@datcus", SqlDbType.DateTime));
    base.cmd.Parameters["@datcus"].Value = ObjFamcom.datcus??DBNull.Value;

    ou ainda melhor

    base.cmd.Parameters.AddWithValue("@datcus", ObjFamcom.datcus??DBNull.Value);



     


    Nuno Gomes http://nunogomes.net
    segunda-feira, 6 de fevereiro de 2012 17:59
  • tem um jeito bacana de fazer.. é assim

    if(objData == new DateTime())

    {

         MessageBox.Show("Data vazia!");

    }

    é bom fazer assim porque undependente das configuraçções regionais da maquina funciona perfeitamente.!

    Se foi util não esqueça de marcar ;)

    quinta-feira, 9 de fevereiro de 2012 17:11