none
Converter string to datetime ??? RRS feed

  • Pergunta

  • Pessoal,

    Estou com uma duvida; estou tentando alterar um form onde meu o primeiro campo do form é uma label do codigo do chamado que é um campo do tipo int, mas como ele é chave nao posso alterar no formulario de alteração. porem esta aparecendo um erro do tipo datetime to string, que nao estou entendo e sabendo resolver, alguem pode me ajudar ?

    protected void btnalterar_Click(object sender, EventArgs e)
            {


                int m = Int32.Parse("LBLCODIGO"); //label que traz o codigo do chamado, campo Chave do formulario de abertura de chamado.
                Chamado objchamado = dc.Chamado.First(c => c.id_chamado == m);
                objchamado.Data = Convert.ToDateTime(txtdata.Text);
                objchamado.Status = txtstatus.Text.Trim();
                objchamado.Id_setor = Convert.ToInt32(dropsetor.Text);
                objchamado.Id_tipo = Convert.ToInt32(droptipo.Text);
                objchamado.Desc_chamado = txtdescricao.Text.Trim();
                objchamado.Obs_chamado = txtobservacao.Text.Trim();
                objchamado.Usuario = txtusuario.Text.Trim();

                dc.SubmitChanges();
                Response.Redirect("cad_chamado");

            }

    terça-feira, 11 de junho de 2013 16:33

Respostas

Todas as Respostas

  • tente assim;

    DateTime Data = DateTime.Now;
    
    Data = Convert.ToDateTime(txtdata.Text);
    objchamado.Data = Data.ToString("d");



    terça-feira, 11 de junho de 2013 16:49
  • Olá André , posta aqui o texto exato do erro, pra ficar mais fácil entender o problema. O seu objchamado.Data é do tipo DateTime?
    terça-feira, 11 de junho de 2013 16:58
  • Iai André blzz,

    será q a sua  propriedade   Data do seu objchamado não esta declarada como String ???? pois a conversão do textbox para datetime  está blzz ............


    Diego Almeida Barreto System Analyst / Software Developer


    terça-feira, 11 de junho de 2013 17:01
  • o erro que ocorre é este:

    A cadeia de caracteres de entrada não estava em um formato incorreto.

    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: A cadeia de caracteres de entrada não estava em um formato incorreto.

    Erro de Origem:
    Linha 68:         protected void btnalterar_Click(object sender, EventArgs e)
    Linha 69:         {
    Linha 70:             int m = Int32.Parse("LBLCODIGO");
    Linha 71:             Chamado objchamado = dc.Chamado.First(c => c.id_chamado == m);
    Linha 72:             objchamado.Data = Convert.ToDateTime(txtdata.Text);

    terça-feira, 11 de junho de 2013 17:40
  • LBLCODIGO é o nome da Label? Se for vc deveria utilizar int m = Int32.Parse(LBLCODIGO.Text);
    • Sugerido como Resposta EltonMcdo terça-feira, 11 de junho de 2013 17:49
    terça-feira, 11 de junho de 2013 17:46
  • Troque a linha 70 pelo trecho abaixo:

    int m = Int32.Parse(LBLCODIGO.Text);


    Leonardo D'Amato Microsoft .Net Developer

    terça-feira, 11 de junho de 2013 17:48
  • Leonardo, Elton... continua o mesmo erro mesmo apos estas alterações ..


    terça-feira, 11 de junho de 2013 18:58
  • Cara, o texto da sua label tem que ser número, senão não vai funcionar. Você já verificou isso?

    Se o texto da sua label for diferente do permitido no formato Int32, dará erro.


    Leonardo D'Amato Microsoft .Net Developer

    terça-feira, 11 de junho de 2013 19:00
  • Sim Leonardo, o campo é um numero pois ao clicar no botão consulta o form traz os dados com o label e o numero da ID do chamado o qual no BD é do tipo INT. Porem com os dados na tela do form, faço uma alteração em qualquer campo, ao salvar aparece esta mensagem de erro.

    terça-feira, 11 de junho de 2013 19:21
  • segue codigo completo:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;


    namespace docmmonet.helpdesk
    {
        public partial class altera_chamado : System.Web.UI.Page
        {
            helpdeskDataContext dc = new helpdeskDataContext();

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {

                    //  preenche setor
                    var setor = (from s in dc.Setor
                                 select new { s.id_setor, s.Nome_setor });
                    dropsetor.DataTextField = "Nome_setor";
                    dropsetor.DataValueField = "id_setor";
                    dropsetor.DataSource = setor;
                    DataBind();
                    
                    //preenche tipo
                    var tipo = (from t in dc.Tipo
                                select new { t.id_tipo, t.Desc_tipo });
                    droptipo.DataTextField = "Desc_tipo";
                    droptipo.DataValueField = "Id_tipo";
                    droptipo.DataSource = tipo;
                    DataBind();
                                   
                    //recupra parametros id
                    string id = Request.Params[0];
                    LBLCODIGO.Text = id;

                    try
                    {
                        //pesquisa os dados do chamado
                        int m = Int32.Parse(id);
                        Chamado objchamado = dc.Chamado.First(c =>c.id_chamado == m);
                        
                        //preenche form
                        txtdata.Text = Convert.ToString(objchamado.Data);
                        txtstatus.Text = objchamado.Status;
                        txtdescricao.Text = objchamado.Desc_chamado;
                        txtobservacao.Text = objchamado.Obs_chamado;
                        txtusuario.Text = objchamado.Usuario;
                                           
                        //trata combos
                        dropsetor.SelectedValue = dropsetor.Items.FindByValue(Convert.ToString(objchamado.Id_setor)).Value;
                        droptipo.SelectedValue = droptipo.Items.FindByValue(Convert.ToString(objchamado.Id_tipo)).Value;

                    }

                    catch (Exception EX)
                    {
                        lblalterar.Text = EX.Message;
                    }

                }

            }

            protected void btnalterar_Click(object sender, EventArgs e)
            {
                
                int m = Int32.Parse("LBLCODIGO.text");
                Chamado objchamado = dc.Chamado.First(a => a.id_chamado == m);
                //DateTime Data = DateTime.Now;
                //Data = Convert.ToDateTime(txtdata.Text);
                //objchamado.Data = Data.ToString("d");
                objchamado.Data = Convert.ToDateTime(txtdata.Text);
                objchamado.Status = txtstatus.Text.Trim();
                objchamado.Id_setor = Convert.ToInt32(dropsetor.Text);
                objchamado.Id_tipo = Convert.ToInt32(droptipo.Text);
                objchamado.Desc_chamado = txtdescricao.Text.Trim();
                objchamado.Obs_chamado = txtobservacao.Text.Trim();
                objchamado.Usuario = txtusuario.Text.Trim();

                dc.SubmitChanges();
                Response.Redirect("cad_chamado");

            }
        }
    }

    terça-feira, 11 de junho de 2013 19:26
  • Cara, recupere o id como Int ao invés de string no Request.Params[0]. Pois assim vc mantem o tipo original.

    Para passar para o label, use .ToString();

    pois assim, seu Int32 m, recebe apenas id, sem precisar converter nada. Teste aí.


    Leonardo D'Amato Microsoft .Net Developer

    terça-feira, 11 de junho de 2013 19:40
  • Leonardo, nao é possivel converter string to int.

    essa é a mensagem ao altera para :

    //recupra parametros id
                    int id = Request.Params[0];
                    LBLCODIGO.Text = id;

     Cannot implicity convert tyoy 'string' to 'int'.

    quarta-feira, 12 de junho de 2013 19:28
  • int id = Convert.ToInt32(Request.Params[0]);

    Leonardo D'Amato Microsoft .Net Developer

    quarta-feira, 12 de junho de 2013 19:30
  • Andre, Desculpa minha ignorância, mas já tentou tirar as aspas? de: int m = Int32.Parse("LBLCODIGO.text"); para: int m = Int32.Parse(LBLCODIGO.text); []'s

    Márcio S Silva | Visite o meu site http://marsosi.blogspot.com | E-mail: marsosil@ovi.com

    • Sugerido como Resposta Márcio S Silva quinta-feira, 13 de junho de 2013 12:12
    quinta-feira, 13 de junho de 2013 12:12
  • É cara, copie e cole o que eu fiz ali em cima. Tire as aspas, senão não dará certo nunca. 

    Troque isso:

    int m = Int32.Parse("LBLCODIGO.text");

    Por isso: 

    int m = Int32.Parse(LBLCODIGO.Text);


    Leonardo D'Amato Microsoft .Net Developer


    quinta-feira, 13 de junho de 2013 12:20
  • Leonardo, funcionou ... porem  nao da nenhum erro mas tambem nao esta efetuando a alteração..

    agora eu nao entendi nada... rsrs

    quinta-feira, 13 de junho de 2013 13:09
  • Depura o código para ver se a label está recebendo algum valor. Se estiver, verifique se a variável m também está recebendo. 

    e coloque o dc.SubmitChanges dentro de um bloco TryCatch pra testar.


    Leonardo D'Amato Microsoft .Net Developer

    quinta-feira, 13 de junho de 2013 13:21
  • Obrigado

    Leornado,  o problema estava na falta do : if (!isPostback)

    Obrigado a todos

    if

    (!IsPostBack)

    Obrigado a todos

    domingo, 16 de junho de 2013 15:24