none
Erro salvando campo do tipo datetime do sql server 2012 no asp.net RRS feed

  • Pergunta

  • Erro de Servidor no Aplicativo '/'.

    Cadeia de caracteres não foi reconhecida como DateTime válido.

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.FormatException: Cadeia de caracteres não foi reconhecida como DateTime válido.

    Erro de Origem: 
    Linha 57:             CONTATOS.DEPARTAMENTO = tbDepartamento.Text.Trim().ToUpper();
    Linha 58:             CONTATOS.CORRESPONDENCIA = DropDownListCorrespondencia.Text.Trim().ToUpper();
    Linha 59:             CONTATOS.DATAATUALIZACAO = Convert.ToDateTime(tbDataCadastro.Text.Trim());
    Linha 60: 
    Linha 61:             mdc.SubmitChanges();

    Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Contatos_Edit.aspx.cs    Linha: 59 

    Rastreamento de Pilha: 
    [FormatException: Cadeia de caracteres não foi reconhecida como DateTime válido.]
       System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) +11993714
       System.Convert.ToDateTime(String value) +83
       ControledeUsuarios.Contatos_Edit.onUpdate() in c:\ARTSIM\SGSIM\ControledeUsuarios\Contatos_Edit.aspx.cs:59
       ControledeUsuarios.Contatos_Edit.bntAtualizar_Click(Object sender, EventArgs e) in c:\ARTSIM\SGSIM\ControledeUsuarios\Contatos_Edit.aspx.cs:42
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9670146
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +108
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3562
    


    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.106.0
    quinta-feira, 5 de novembro de 2015 17:24

Respostas

  • Você já tentou debugar o projeto para ver qual é o valor que está indo para aquela linha naquele tbDataCadastro ?

    Qual ORM você utiliza?


    Fulvio C

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 11:39
    sexta-feira, 6 de novembro de 2015 23:09
  • Bom dia,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente

    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 11:38
    segunda-feira, 9 de novembro de 2015 11:38

Todas as Respostas

  • Qual o formato da data nesse campo tbDataCadastro? teste assim:

    DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                      CultureInfo.InvariantCulture);
    

    quinta-feira, 5 de novembro de 2015 17:34
  • O formato da data dd/mm/yyyy no campo tbdataatualizacao.text

    aguardo seu retorno

    obrigado

    quinta-feira, 5 de novembro de 2015 18:39
  • O formato da data e hora em qualquer banco de dados é no padrão americano. ou seja, devem ser enviadas na maioria das vezes com o formato "MM/dd/yyyy HH:mm:ss" e em algumas vezes pode ser "yyyy-MM-dd HH:mm:ss". O segundo exemplo só tive que fazer uma vez com o MySql.  O SqlServer é o primeiro modelo.

    MM/dd/yyyy HH:mm:ss" = Padrão 24 horas (11/05/2015 21:54:00)


    Gilson Joanelo - Desenvolvedor Web

    quinta-feira, 5 de novembro de 2015 23:54
  • A conversão que te passei não funcionou?
    sexta-feira, 6 de novembro de 2015 11:46
  • Bom dia Diego

    Eu não entendi como colocar meu tbDataAtualizacao.Text no seu codigo abaixo:

    DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                      CultureInfo.InvariantCulture);

    sexta-feira, 6 de novembro de 2015 12:32
  • Ah sim, tudo bem...

    DateTime dt = DateTime.ParseExact(tbDataAtualizacao.Text.Trim(), "ddMMyyyy", 
                                      CultureInfo.InvariantCulture);

    sexta-feira, 6 de novembro de 2015 12:39
  • Coloque no seu Web.Config assim ... o globalization é responsável automáticamente para fazer isso.

    <configuration>
    	<system.web>
    		<globalization culture="pt-BR" uiCulture="pt-BR" />
    	</system.web>
    </configuration>

    Outro fator: Nunca mande diretamente a data para seu banco sem um teste se a data é válida:

    Nessa linha

    CONTATOS.DATAATUALIZACAO = Convert.ToDateTime(tbDataCadastro.Text.Trim());

    faça assim

    DateTime DataCadastro;
    
    if (DateTime.TryParse(tbDataCadastro.text, out DataCadastro)){
        CONTATOS.DATAATUALIZACAO = DataCadastro
    } 
    else 
    {
       //data inválida, tome algum decisão
    }

    A configuração que eu passei é primordial para formatos de campos do tipo Data, Hora, Moeda, etc ... então faça essa configuração.

    Link para leitura: http://cbsa.com.br/post/usar-globalization-no-webconfig-e-cultureinfo-para-formatar-data-e-moeda-em-varios-idiomas-no-aspnet-c.aspx


    Fulvio C


    sexta-feira, 6 de novembro de 2015 12:46
  • Bom dia Senhores

    Ainda continua com erros.

    Mudei meu Web.Config e o codigo da data e mesmo assim esta dando erro:

    Erro de Servidor no Aplicativo '/'.

    Cadeia de caracteres não foi reconhecida como DateTime válido.

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.FormatException: Cadeia de caracteres não foi reconhecida como DateTime válido.

    Erro de Origem: 
    Linha 54:                 CONTATOS.CORRESPONDENCIA = DropDownListCorrespondencia.Text.Trim().ToUpper();
    Linha 55:                 //CONTATOS.DATACADASTRO = Convert.ToDateTime(tbDataCadastro.Text.Trim());
    Linha 56:                 CONTATOS.DATACADASTRO = DateTime.ParseExact(tbDataCadastro.Text.Trim(), "ddMMyyyy", CultureInfo.InvariantCulture);
    Linha 57: 
    Linha 58:                 mdc.CONTATOS.InsertOnSubmit(CONTATOS);

    Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Contatos_Add.aspx.cs    Linha: 56 

    Observação: O campo tbdataCadastro.text ja esta neste formato dd/mm/yyyy

    Fico no aguardo

    Muito Obrigado

    sexta-feira, 6 de novembro de 2015 13:44
  • Bom dia Senhores

    Ainda continua com erros.

    Mudei meu Web.Config e o codigo da data e mesmo assim esta dando erro:

    Erro de Servidor no Aplicativo '/'.

    Cadeia de caracteres não foi reconhecida como DateTime válido.

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.FormatException: Cadeia de caracteres não foi reconhecida como DateTime válido.

    Erro de Origem: 
    Linha 54:                 CONTATOS.CORRESPONDENCIA = DropDownListCorrespondencia.Text.Trim().ToUpper();
    Linha 55:                 //CONTATOS.DATACADASTRO = Convert.ToDateTime(tbDataCadastro.Text.Trim());
    Linha 56:                 CONTATOS.DATACADASTRO = DateTime.ParseExact(tbDataCadastro.Text.Trim(), "ddMMyyyy", CultureInfo.InvariantCulture);
    Linha 57: 
    Linha 58:                 mdc.CONTATOS.InsertOnSubmit(CONTATOS);

    Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Contatos_Add.aspx.cs    Linha: 56 

    Observação: O campo tbdataCadastro.text ja esta neste formato dd/mm/yyyy

    Fico no aguardo

    Muito Obrigado

    Não seria assim?

    CONTATOS.DATACADASTRO = DateTime.ParseExact(tbDataCadastro.Text.Trim(), "dd/MM/yyyy", CultureInfo.InvariantCulture);

    Faltou as barras !!! ParseExact (Exato)

    Verifique


    Fulvio C

    sexta-feira, 6 de novembro de 2015 14:02
  • DEU ERRO NOVAMENTE

    Erro de Servidor no Aplicativo '/'.

    Cadeia de caracteres não foi reconhecida como DateTime válido.

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.FormatException: Cadeia de caracteres não foi reconhecida como DateTime válido.

    Erro de Origem: 
    Linha 54:                 CONTATOS.CORRESPONDENCIA = DropDownListCorrespondencia.Text.Trim().ToUpper();
    Linha 55:                 //CONTATOS.DATACADASTRO = Convert.ToDateTime(tbDataCadastro.Text.Trim());
    Linha 56:                 CONTATOS.DATACADASTRO = DateTime.ParseExact(tbDataCadastro.Text.Trim(), "dd/MM/yyyy", CultureInfo.InvariantCulture);
    Linha 57: 
    Linha 58:                 mdc.CONTATOS.InsertOnSubmit(CONTATOS);

    Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Contatos_Add.aspx.cs    Linha: 56 

    Rastreamento de Pilha: 
    [FormatException: Cadeia de caracteres não foi reconhecida como DateTime válido.]
       System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style) +4495302
       System.DateTime.ParseExact(String s, String format, IFormatProvider provider) +31
       ControledeUsuarios.Contatos_Add.onInsert() in c:\ARTSIM\SGSIM\ControledeUsuarios\Contatos_Add.aspx.cs:56
       ControledeUsuarios.Contatos_Add.btnCadastrar_Click(Object obj, EventArgs e) in c:\ARTSIM\SGSIM\ControledeUsuarios\Contatos_Add.aspx.cs:35
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9670146
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +108
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3562
    


    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.106.0

    sexta-feira, 6 de novembro de 2015 15:28
  • Ricardo, veja: Link

    sexta-feira, 6 de novembro de 2015 15:44
  • Boa Tarde Diego

    Eu li todo conteudo do link que você me passou que pelo o que eu vi eu fiz todas as possibilidades do exemplo.

    Porem nenhuma ainda não funcionou.

    Meu textbox ja esta no formato certo dd/mm/yyyy

    porem quando salva da esse erro.

    E eu não entendo o motivo ja que esta tudo certo aparentemente.

    Se puder me ajudar eu agradeço muito.

    Fico no aguardo

    sexta-feira, 6 de novembro de 2015 16:21
  • Qual o tipo de dado que está no banco de dados, DATETIME?
    sexta-feira, 6 de novembro de 2015 16:35
  • Qual o tipo de dado que está no banco de dados, DATETIME?
    Reiterando, coloque o Layout da sua tabela, porque, me parece design de banco de dados !!!

    Fulvio C

    sexta-feira, 6 de novembro de 2015 18:05
  • 
    sexta-feira, 6 de novembro de 2015 18:56
  • Você já tentou debugar o projeto para ver qual é o valor que está indo para aquela linha naquele tbDataCadastro ?

    Qual ORM você utiliza?


    Fulvio C

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 11:39
    sexta-feira, 6 de novembro de 2015 23:09
  • Bom dia,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente

    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 11:38
    segunda-feira, 9 de novembro de 2015 11:38