none
Gravar data atual a partir de um label em C# Winform RRS feed

  • Pergunta

  • Olá pessoal!

    Tenho um form de cadastro e quero que o mesmo pegue a data atual a partir de um label(labelDATA). Meu código está assim:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.Sql;
    using System.Data.SqlClient;
    using System.Data.SqlTypes;
    
    
    
    namespace UnderControl.Clientes
    {
        public partial class CadastrarPF : MetroFramework.Forms.MetroForm
        {
            public CadastrarPF()
            {
                InitializeComponent();
                labelDATA.Text = DateTime.Now.ToString();
    
            }
    
            private void MskCEP_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == 13)
                {
                    using (var ws = new WSCorreios.AtendeClienteClient())
                    {
                        try
                        {
                            var resultado = ws.consultaCEP(MskCEP.Text);
                            txtEndereco.Text = resultado.end;
                            //tbComplemento.Text = resultado.complemento;
                            //tbComplemento2.Text = resultado.complemento2;
                            txtCidade.Text = resultado.cidade;
                            txtBairro.Text = resultado.bairro;
                            txtUF.Text = resultado.uf;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        TxtNumero.Focus();
                    }
                }
            }
    
            private void BtnSalvar_Click(object sender, EventArgs e)
            {
                //Cria a conexão com o servidor SQL
                SqlConnection conexao = new SqlConnection(@"Data Source=MATEUSANDRADE;Initial Catalog=Clientes;Integrated Security=True");
                SqlCommand comm = new SqlCommand();
    
                comm.Connection = conexao;
    
    
                comm.CommandText = "insert into CadastroPF(cliente_desde, cpf, nome, nasc, rg, org_exp, apelido, mae, pai, cep, endereco, numero, bairro, cidade, uf, ponto_ref, tel_res, telefone1, telefone2, email, trabalho, salario)" + "values('"+ labelDATA.Text + "','" + MskCPF.Text + "','" + TxtNome.Text + "','" + MskNasc.Text + "','" + TxtRG.Text + "','" + MskOrgao.Text + "','" + TxtApelido.Text + "','" + TxtMae.Text + "','" + TxtPai.Text + "','" + MskCEP.Text + "','" + txtEndereco.Text + "','" + TxtNumero.Text + "','" + txtBairro.Text + "','" + txtCidade.Text + "','" + txtUF.Text + "','" + TxtReferencia.Text + "','" + MskResidencial.Text + "','" + MskTelefone1.Text + "','" + MskTelefone2.Text + "','" + TxtEmail.Text + "','" + TxtTrabalho.Text + "','" + TxtSalario.Text + "')";
    
                //Adicionamos os valores aos campos
                comm.Parameters.AddWithValue("@cliente_desde", Convert.ToDateTime(labelDATA.Text));
                comm.Parameters.AddWithValue("@cpf", Convert.ToString(MskCPF.Text));
                comm.Parameters.AddWithValue("@nome", Convert.ToString(TxtNome.Text));
                comm.Parameters.AddWithValue("@nasc", (MskNasc.Text));
                comm.Parameters.AddWithValue("@rg", Convert.ToString(TxtRG.Text));
                comm.Parameters.AddWithValue("@org_exp", Convert.ToString(MskOrgao.Text));
                comm.Parameters.AddWithValue("@apelido", Convert.ToString(TxtApelido.Text));
                comm.Parameters.AddWithValue("@mae", Convert.ToString(TxtMae.Text));
                comm.Parameters.AddWithValue("@pai", Convert.ToString(TxtPai.Text));
                comm.Parameters.AddWithValue("@cep", Convert.ToString(MskCEP.Text));
                comm.Parameters.AddWithValue("@endereco", Convert.ToString(txtEndereco.Text));
                comm.Parameters.AddWithValue("@numero", Convert.ToString(TxtNumero.Text));
                comm.Parameters.AddWithValue("@bairro", Convert.ToString(txtBairro.Text));
                comm.Parameters.AddWithValue("@cidade", Convert.ToString(txtCidade.Text));
                comm.Parameters.AddWithValue("@uf", Convert.ToString(txtUF.Text));
                comm.Parameters.AddWithValue("@ponto_ref", Convert.ToString(TxtReferencia.Text));
                comm.Parameters.AddWithValue("@tel_res", Convert.ToString(MskResidencial.Text));
                comm.Parameters.AddWithValue("@telefone1", Convert.ToString(MskTelefone1.Text));
                comm.Parameters.AddWithValue("@telefone2", Convert.ToString(MskTelefone2.Text));
                comm.Parameters.AddWithValue("@email", Convert.ToString(TxtEmail.Text));
                comm.Parameters.AddWithValue("@trabalho", Convert.ToString(TxtTrabalho.Text));
                comm.Parameters.AddWithValue("@salario", Convert.ToDecimal(TxtSalario.Text));
                comm.CommandType = CommandType.Text;
    
    
    
                //Abre a conexão com o Banco de dados
                conexao.Open();
                try
                {
                    int i = comm.ExecuteNonQuery();
                    if (i > 0)
                        MessageBox.Show("Cadastro realizado com sucesso!");
                    
    
                }
                //Caso haja algum erro será criada uma MessageBox informando o erro
                catch (Exception ex)
                {
                    MessageBox.Show("Erro:" + ex.ToString());
                }
                finally
                {
                    //Fecha a conexão com o servidor
                    conexao.Close();
                    
                }
            }
    
        }
    }
    
        
    
        
    

    Porém ao tentar gravar os dados aparece essa mensagem de erro:

    Já tentei dessas maneiras e nada!

    //Primeira tentativa
    comm.Parameters.AddWithValue("@cliente_desde", labelDATA.Text);
    //Segunda tentativa
    comm.Parameters.AddWithValue("@cliente_desde", Convert.ToDateTime(labelDATA.Text));
    //Terceira tentativa
    comm.Parameters.AddWithValue("@cliente_desde", Convert.ToString(labelDATA.Text));

    Conto com vocês mais uma vez!! Obrigado!!


    Att, Mateus Andrade

    terça-feira, 16 de janeiro de 2018 14:18

Respostas

  • Boa tarde, Matheus.

    Internamente,
    o SQL Server armazena datas no formato americano, ou seja, MM/DD/AAAA.

    Tente algo assim:

    comm.Parameters.AddWithValue("@cliente_desde", Convert.ToDateTime(labelDATA.Text).ToString("MM/dd/yyyy"));

    https://social.msdn.microsoft.com/Forums/pt-BR/38f313ea-df42-4d17-a5d3-113c83c03c58/como-formatar-datas-no-formato-yyyymmdd-em-c-windows-form?forum=vscsharppt


    MARIANO1776


    terça-feira, 16 de janeiro de 2018 14:42

Todas as Respostas

  • Qual o tipo da coluna no banco de dados? Date ou DateTime?

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.


    terça-feira, 16 de janeiro de 2018 14:34
  • Boa tarde, Matheus.

    Internamente,
    o SQL Server armazena datas no formato americano, ou seja, MM/DD/AAAA.

    Tente algo assim:

    comm.Parameters.AddWithValue("@cliente_desde", Convert.ToDateTime(labelDATA.Text).ToString("MM/dd/yyyy"));

    https://social.msdn.microsoft.com/Forums/pt-BR/38f313ea-df42-4d17-a5d3-113c83c03c58/como-formatar-datas-no-formato-yyyymmdd-em-c-windows-form?forum=vscsharppt


    MARIANO1776


    terça-feira, 16 de janeiro de 2018 14:42
  • Boa tarde, Matheus.

    Internamente,
    o SQL Server armazena datas no formato americano, ou seja, MM/DD/AAAA.

    Tente algo assim:

    comm.Parameters.AddWithValue("@cliente_desde", Convert.ToDateTime(labelDATA.Text).ToString("MM/dd/yyyy"));

    https://social.msdn.microsoft.com/Forums/pt-BR/38f313ea-df42-4d17-a5d3-113c83c03c58/como-formatar-datas-no-formato-yyyymmdd-em-c-windows-form?forum=vscsharppt


    MARIANO1776


    Olá Mariano, primeiramente obrigado por participar!!

    Fiz algumas modificações na sua sugestão e ficou assim:

    //Fiz a seguinte modificação no próprio label
    labelDATA.Text = DateTime.Now.ToString("MM/dd/yyyy");
    
    //E os parâmetros para add fiz assim
    comm.Parameters.AddWithValue("@cliente_desde", (labelDATA.Text));
    
    Deu certinho!


    Att, Mateus Andrade

    terça-feira, 16 de janeiro de 2018 14:56
  • Olá Juliano! Está como datetime..

    Att, Mateus Andrade

    terça-feira, 16 de janeiro de 2018 15:01
  • Ok, que bom que deu certo.

    se atendeu, por gentileza, marque como útil/resposta.


    MARIANO1776

    terça-feira, 16 de janeiro de 2018 15:02