none
data nascto que pode ser null e datime ao mesmo tempo RRS feed

  • Pergunta

  • Pessoal

    implantei o código para estudo

    esta funcionando tudo como queria 99.9% não da erro, só quero acertar
    esse pequeno detalhe pra funcionar 100% e dar como concluido


    seguinte

    quero que a data de nascimento do conjugue se não for preenchido acate o valor null
    (isso esta funcionando)
    só quero que caso a pessoa coloque uma data errada tambem de a mensagem de erro e retorne para corrigir.


    mas se deixar em branco aceitar null

    o campo do nascto do cliente fiz e deu certo, mas porque lá é obrigatorio o preenchimento
    da data de nascto

    mas o da esposa não é obrigatorio.. ai que vem meu dilema
    pois como tratar um registro que ele ao mesmo tempo pode ser null
    e um datetime?


    aguardo ajuda.


    Desde já peço permissão para o Membro Pablo Bastita e Paulo Cesar Vianapois no código estou referenciando a ajuda que eles me prestaram de muito valia, pois sem as dicas deles não tinha chegado até aqui.e de outros que não me recordo agora.

    codigo fonte completo

    https://skydrive.live.com/redir.aspx?cid=871760ff201287a8&resid=871760FF201287A8!157

     

    Pessoal não faço a minima idéia de como resolver isso.. me ajudem

    o código é esse

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using MySql.Data.MySqlClient;
    
    
    namespace CadastroComData
    {
        public partial class frmCadastro : Form
        {
            MySqlConnection dbConexao;
            MySqlDataAdapter dbAdapter;
            MySqlCommand cmdIncluir;
            public DataSet dsBanco;
            public string Banco = "Persist Security Info=False;server=localhost;database=bdcadastro;uid=root;server=localhost;database=bdcadastro;uid=root;pwd=2525";
            public int linhaClick;
    
            public frmCadastro()
            {
                InitializeComponent();
                verificarBanco();
                travaJanelas();
                // Através das instruções abaixo estou deixando invisível as colunas do banco de dados no DataGridView
                this.dtgCadastro.Columns[0].Visible = false;
                this.dtgCadastro.Columns[3].Visible = false;
                this.dtgCadastro.Columns[4].Visible = false;
                this.dtgCadastro.Columns[5].Visible = false;
                this.dtgCadastro.Columns[6].Visible = false;
                this.dtgCadastro.Columns[7].Visible = false;
                this.dtgCadastro.Columns[8].Visible = false;
                this.dtgCadastro.Columns[9].Visible = false;
                this.dtgCadastro.Columns[10].Visible = false;
                // Deixando o txtbox e label invisivel dentro do panel da Procura do cliente
                txtNomeProcura.Visible = false;
                label3.Visible = false;
                // deixando as linhas do datagridview coloridas
                dtgCadastro.RowsDefaultCellStyle.BackColor = Color.White;
                dtgCadastro.AlternatingRowsDefaultCellStyle.BackColor = Color.Aquamarine;
                // Formatando o titulo da coluna no datagridview
                dtgCadastro.Columns[1].HeaderText = "CLIENTE";
                dtgCadastro.Columns[2].HeaderText = "NASCTO";
               // formatando a largura da coluna no datagridview
                dtgCadastro.Columns[1].Width = 300;
                dtgCadastro.Columns[2].Width = 100;
                // deixando o panel onde esta o datagridview invisivel
                panel1.Visible = false;
            }
            public void travaJanelas()
            {
                // travando os campos de digitação no form
                txtNome.Enabled = false;
                mtbDataNascto.Enabled = false;
                txtEndereco.Enabled = false;
                txtBairro.Enabled = false;
                txtCidade.Enabled = false;
                cbxUF.Enabled = false;
                mtbCep.Enabled = false;
                txtNomeEsposa.Enabled = false;
                mtbDataNasctoEsposa.Enabled = false;
                txtFone.Enabled = false;
            }
            public void destravaJanelas()
            {
                // destravando os campos de digitação no form
                txtNome.Enabled = true;
                mtbDataNascto.Enabled = true;
                txtEndereco.Enabled = true;
                txtBairro.Enabled = true;
                txtCidade.Enabled = true;
                cbxUF.Enabled = true;
                mtbCep.Enabled = true;
                txtNomeEsposa.Enabled = true;
                mtbDataNasctoEsposa.Enabled = true;
                txtFone.Enabled = true;
              
                // setando o ponteiro do mouse no campo de nome
                txtNome.Focus();
    
            }
            protected void limpar()
            {
               // limpando os campos do form
                txtNome.Text = "";
                mtbDataNascto.Text = "";
                txtEndereco.Text = "";
                txtBairro.Text = "";
                txtCidade.Text = "";
                cbxUF.Text = "";
                mtbCep.Text = "";
                txtNomeEsposa.Text = "";
                mtbDataNasctoEsposa.Text = "";
                txtFone.Text = "";
                
    
           
            }
            private void atualizaGrid()
            {
                string sql = "Select * from tbcadastro";
                dbAdapter = new MySqlDataAdapter(sql, dbConexao);
                dsBanco = new DataSet();
                dbAdapter.Fill(dsBanco, "tbcadastro");
                dtgCadastro.DataSource = dsBanco;
                dtgCadastro.DataMember = "tbcadastro";
    
            }
    
            private void verificarBanco()
            {
                dsBanco = new DataSet();
                dbConexao = new MySqlConnection(Banco);
                try
                {
                    dbConexao.Open();
                }
                catch
                {
                    MessageBox.Show("Problemas com o Banco de Dados");
                }
                if (dbConexao.State == ConnectionState.Open)
                {
                    atualizaGrid();
                }
            }
    
            // ajuda obtida do Srs Pablo Batista e Paulo Cesar Viana no forum MSDN 
            //método privado parametrizado que recebe um parâmetro
            //do tipo string que será o nome a pesquisar e outro 
            //do tipo datetime que será a data de nascimento que
            //se deseja pesquisar e o método retorna uma expressão
            //boleana ou seja se retornar true existe no bd se retornar
            //false não existe
    
            private bool VerificaQueExiste(string nome, DateTime nascto)
            {
                //essa variável que será o meu retorno uso a 
                //seguinte lógica inicio ela com -1 e faço
                //a consulta no bd dando um count() e faço essa
                //variável receber o retorno utilizando o ExecuteScalar()
                //e caso ela for maior que 0 é pq foi lida uma linha 
                //no bd que indica que a condição do meu comando sql
                //foi satisfeita, ou seja, existe o registro pesquisado
    
                int retorno = -1;
                //Conexão com o bd
    
                MySqlConnection conn = new MySqlConnection(@"server=localhost; Uid=root; Pwd=2525;database=bdcadastro");
    
                //o comando em si parametrizado que pesquisa se existe o nome e a data de nascimento
    
                string sql = "SELECT COUNT(*) FROM tbcadastro WHERE cliente=@nome AND nascto=@nascto";
                //instância do comando
    
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                //preencho os parâmetros do comando com os parâmetros recebidos no método
    
                cmd.Parameters.AddWithValue("@nome", nome);
                cmd.Parameters.AddWithValue("@nascto",nascto );
                // abrindo a conexão
                conn.Open();
                //executo o comando já atribuindo seu retorno a variável
                retorno = Convert.ToInt32(cmd.ExecuteScalar());
                //fecho conexão
                conn.Close();
                //e retorno true se retorno formaior que zero
    
               return retorno > 0;
            }
    
    
            private void frmCadastro_Load(object sender, EventArgs e)
            {
                // deixando os botões sem o clique
                btnExcluir.Enabled = false;
                btnAlterar.Enabled = false;
                btnIncluir.Enabled = false;
                btnGrava.Enabled = false;
                btnCancelar.Enabled = false;
    
            }
    
            // click do botão sair
            private void btnSair_Click(object sender, EventArgs e)
            {
                this.Close();
    
            }
            // click do botao novo
            private void btnNovo_Click(object sender, EventArgs e)
            {
                panel2.Visible = false;
                destravaJanelas();
                limpar();
                btnNovo.Enabled = false;
                btnIncluir.Enabled = true;
                btnCancelar.Enabled = true;
                btnExcluir.Enabled = false;
                btnAlterar.Enabled = false;
    
                txtNome.Focus();
            }
            // click do botão incluir
            private void btnIncluir_Click(object sender, EventArgs e)
            {
                // aqui verifico se a data fornecida é uma data valida
                string valor = string.Empty;
                DateTime resultado = DateTime.MinValue;
                if (DateTime.TryParse(this.mtbDataNascto.Text.Trim(), out resultado))
                {
    
                }
                else
                {
                    MessageBox.Show("data invalida");
                    mtbDataNascto.Text = "";
                    mtbDataNascto.Focus();
                    return;
    
                }
    
           //     DateTime resultadocj = DateTime.MinValue;
    
                
      /*          if (DateTime.TryParse(this.mtbDataNasctoEsposa.Text.Trim(), out resultadocj))
                {
                 
                  
                }
                else
                {
                    MessageBox.Show("data invalida");
                    mtbDataNasctoEsposa.Text = "";
                    mtbDataNasctoEsposa.Focus();
                    return;
    
                }
             */  
    
              
              
                if ((txtNome.Text != string.Empty ))
                {
                    
               //     cmdConsultar = new MySqlCommand("select cliente from tbcadastro where (cliente='" + txtNome.Text + "')AND (nascto = '" + mtbDataNascto.Text +  "')", dbConexao);
    
    
                    //se o método retornar true é pq existe 
                    //o cliente pesquisado, * veja que passo 
                    //os textbox como parâmetros do método
    
                    if (VerificaQueExiste(txtNome.Text, Convert.ToDateTime(mtbDataNascto.Text)))
    
                    {
                        //exibo a mensagem que já existe
    
                        MessageBox.Show("Este Cliente já existe", "Mensagem do Sistema");
    
                    }
                        // senão
                    else
                    {
                        // continua
                        MySqlConnection cn2 = new MySqlConnection(Banco);
                        cn2.Open();
    
                                  
                        if  (mtbDataNasctoEsposa.Text.Length ==10)
      
                        {
                            // AJUDA Obtida pelo Sr Carlos e Fernando Bastos na comunidade do Orkut
                            // conversão para inclusão no banco de dados  utilizei a função nativa do Mysql (str_to_date)
                            valor = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y'), ";
                            
                        }
    
                        else
                        {
                            valor = "null,";
                          
                        }
                        
    
                         string incluiSql = "insert into tbcadastro(cliente, nascto, endereco, bairro, cidade, uf, cep, conjugue, nasctoconjugue, fone) values (" +
                         "\'" + txtNome.Text + "\'," +
                         "str_to_date(\'" + mtbDataNascto.Text + "\', '%d/%m/%Y' ), " +
                         "\'" + txtEndereco.Text + "\', " +
                         "\'" + txtBairro.Text + "\', " +
                         "\'" + txtCidade.Text + "\', " +
                         "\'" + cbxUF.Text + "\', " +
                         "\'" + mtbCep.Text + "\', " +
                         "\'" + txtNomeEsposa.Text + "\', " +
                         valor +
                         "\'" + txtFone.Text + "\')";
                         cmdIncluir = new MySqlCommand(incluiSql, cn2);
                         cmdIncluir.ExecuteNonQuery();
                         MessageBox.Show("Inclusão efetuada com sucesso!", "Mensagem do Sistema");
                    }
                    panel2.Visible = true;
                    limpar();
                    travaJanelas();
                    atualizaGrid();
                    btnIncluir.Enabled = false;
                    btnCancelar.Enabled = false;
                    btnNovo.Enabled = true;
                    txtNome.Focus();
    
                }
                else
                {
                    MessageBox.Show("Obrigatório o preenchimento dos campos", "Mensagem de Alerta");
                    txtNome.Focus();
                }
            }
    
            private void dtgCadastro_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                travaJanelas();
                btnCancelar.Enabled = false;
                btnAlterar.Enabled = true;
                btnExcluir.Enabled = true;
                btnIncluir.Enabled = false;
                btnNovo.Enabled = true;
    
    
                linhaClick = int.Parse(e.RowIndex.ToString());
                if (linhaClick != -1)
                {
                    txtNome.Text = dtgCadastro[1, linhaClick].Value.ToString();
                    mtbDataNascto.Text = dtgCadastro[2, linhaClick].Value.ToString();
                    txtEndereco.Text = dtgCadastro[3, linhaClick].Value.ToString();
                    txtBairro.Text = dtgCadastro[4, linhaClick].Value.ToString();
                    txtCidade.Text = dtgCadastro[5, linhaClick].Value.ToString();
                    cbxUF.Text = dtgCadastro[6, linhaClick].Value.ToString();
                    mtbCep.Text = dtgCadastro[7, linhaClick].Value.ToString();
                    txtNomeEsposa.Text = dtgCadastro[8, linhaClick].Value.ToString();
                    mtbDataNasctoEsposa.Text = dtgCadastro[9, linhaClick].Value.ToString();
                    txtFone.Text = dtgCadastro[10, linhaClick].Value.ToString();
                    panel1.Visible = false;
                }   
            }
    
            // click do botao excluir
            private void btnExcluir_Click(object sender, EventArgs e)
            {
                if (txtNome.Text == string.Empty)
                {
                    MessageBox.Show("Nenhum Cliente selecionado!!!", "Mensagem");
                    return;
                }
                string sqlDelete = "delete from tbcadastro where codigocliente =" +
                       dtgCadastro[0, linhaClick].Value.ToString();
    
                MySqlCommand cmdExcluir = new MySqlCommand(sqlDelete, dbConexao);
                cmdExcluir.ExecuteNonQuery();
                MessageBox.Show("Registro Eliminado com Sucesso!!!", "Mensagem");
                limpar();
                panel2.Visible = true;
                atualizaGrid();
    
                btnExcluir.Enabled = false;
                btnAlterar.Enabled = false;
                btnNovo.Enabled = true;
                txtNome.Focus();
            }
            //clic do botao alterar
            private void btnAlterar_Click(object sender, EventArgs e)
            {
                if (txtNome.Enabled == false && txtNome.Text == string.Empty)
                {
                    MessageBox.Show("Nenhum Cliente Selecionado!!!", "Mensagem");
                    return;
                }
                destravaJanelas();
                btnNovo.Enabled = false;
                btnExcluir.Enabled = false;
                btnCancelar.Enabled = true;
                btnAlterar.Enabled = false;
                btnGrava.Enabled = true;  
            }
            // click do botao cancelar
            private void btnCancelar_Click(object sender, EventArgs e)
            {
                panel2.Visible = true;
                travaJanelas();
                limpar();
                btnNovo.Enabled = true;
                btnIncluir.Enabled = false;
                btnCancelar.Enabled = false;
                btnGrava.Enabled = false;
                txtNome.Focus();
            }
    
            // click do botao gravar
            private void btnGrava_Click(object sender, EventArgs e)
            {
    
              
                {
                    if (txtNome.Text == string.Empty &&
                        mtbDataNascto.Text == string.Empty)
                    {
                        MessageBox.Show("Campos Nome e Data Nascto Obrigatórios", "Mensagem");
                        return;
                    }
    
                }
                   string valordtcj = string.Empty;
                   
                if  (mtbDataNasctoEsposa.Text.Length <10)
                    {
                        valordtcj = "null";
                    }
                    else
                    {
                        valordtcj = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y')";
                    }
                
                         string sqlUpdate = "update tbcadastro set " +
                         "cliente ='" + txtNome.Text.Trim() + "'," +
                         "nascto = str_to_date(\'" + mtbDataNascto.Text + "\', '%d/%m/%Y'), " +
                         "endereco = '" + txtEndereco.Text + "'," +
                         "bairro = '" + txtBairro.Text + "'," +
                         "cidade = '" + txtCidade.Text + "'," +
                         "uf = '" + cbxUF.Text + "'," +
                         "cep = '" + mtbCep.Text + "'," +
                         "conjugue = '" + txtNomeEsposa.Text + "'," +
                         "nasctoconjugue = " + valordtcj + "," +
                         "fone = \'" + txtFone.Text + "\' " +
                         " where codigocliente = \'" +
                         dtgCadastro[0, linhaClick].Value.ToString() + "\'";
    
    
    
                MySqlCommand cmdAlterar = new MySqlCommand(sqlUpdate, dbConexao);
                cmdAlterar.ExecuteNonQuery();
                MessageBox.Show("Registro Alterado com Sucesso!!!", "Mensagem");
                limpar();
                panel2.Visible = true;
                atualizaGrid();
    
                btnExcluir.Enabled = false;
                btnAlterar.Enabled = false;
                btnNovo.Enabled = true;
                btnCancelar.Enabled = false;
                btnGrava.Enabled = false;
                travaJanelas();
                txtNome.Focus();
            }
    
            // click do botao Procurar
            private void btnProcurar_Click(object sender, EventArgs e)
            {
                label3.Visible = true;
                txtNomeProcura.Visible = true;
                
    
                if (btnProcurar.Text == "Procurar")
                {
                    btnProcurar.Text = "Executar";
                    txtNomeProcura.Enabled = true;
                    txtNomeProcura.Focus();
                }
                else
                {
                    btnProcurar.Text = "Procurar";
                    txtNomeProcura.Enabled = false;
                    if (txtNomeProcura.Text != "")
                    {
                        string sqlSelect = "select * from tbcadastro where cliente like '%" +
                             txtNomeProcura.Text + "%'";
                        MySqlCommand cmdPesquisar = new MySqlCommand(sqlSelect, dbConexao);
                        cmdPesquisar.ExecuteNonQuery();
                        dbAdapter = new MySqlDataAdapter(sqlSelect, dbConexao);
                        dsBanco = new DataSet();
                        dbAdapter.Fill(dsBanco, "tbcadastro");
                        dtgCadastro.DataSource = dsBanco;
                        dtgCadastro.DataMember = "tbcadastro";
                        
                    }
                    else
                    {
                        atualizaGrid();
                    }
                    txtNomeProcura.Clear();
                   
                }
            }
    
            // click do botao localizar, notem que ao invés de chamar um form estou 
            //deixando o panel onde esta o datagrid localizado como visivel 
            private void btnLocalizar_Click(object sender, EventArgs e)
            {
                panel2.Visible = false;
                panel1.Visible = true;
                txtNomeProcura.Enabled = false;
                label3.Visible = false;
                txtNomeProcura.Visible = false;
            }
    
            // este botao esta dentro do panel da procura, ele ao sair deixa o panel invisivel
            private void btnSairConsulta_Click(object sender, EventArgs e)
            {
                panel1.Visible = false;
            }
         
        }
    }
    
    
    
    

     

     

     

    quarta-feira, 21 de setembro de 2011 01:53

Respostas

  • Olá,

    aonde está 

     if  (mtbDataNasctoEsposa.Text.Length ==10)
    {
          // AJUDA Obtida pelo Sr Carlos e Fernando Bastos na comunidade do Orkut
          // conversão para inclusão no banco de dados  utilizei a função nativa do Mysql (str_to_date)
          valor = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y'), ";
                            
    }
    


    Tente substituir por:

    //Assume o valor como sendo Null por padrão.
    valor = "Null";
    
    //Testa se existem caracteres diferentes de barra
    if (mtbDataNasctoEsposa.Text.Replace("//", "").Trim() != String.empty)
    {
        DateTime data=new DateTime();
        //Testa se é uma data válida, caso seja substitui o null pela função do Date
        //Se não for uma data válida, manterá o null
        if (DateTime.TryParse(mtbDataNasctoEsposa.Text, out data))
        {
            valor = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y'), ";
        }
    }
    
    
    



    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C#
    MCTS Windows 7
    • Marcado como Resposta Grizante quinta-feira, 22 de setembro de 2011 11:56
    quarta-feira, 21 de setembro de 2011 12:04

Todas as Respostas

  • Valida se o campo data  está preenchido. Caso esteja Valida se está no formato correto.

     

    DateTime? data = null;
    if (!string.IsNullOrEmpty(txtData.Text))
    {
          bool dataValida = ValidarCampoData();
    
          if (dataValida)
          {
                data = DateTime.Parse(txtData.Text);
           }
    }

    
    

     

    private bool ValidarCampoData()
    {
        DateTime dataOut;
        bool retornoMetodo = true;
    
    	if (txtCampoData.Text.Length == 10)
        {
            bool isValid = DateTime.TryParse(txtCampoData.Text, out dataOut);
            if (!isValid)
            {
                retornoMetodo = false;
            }
        }
    	return retornoMetodo;
    }
    


     


    --
    Marque as respostas e ajude a melhorar a busca do fórum.


    quarta-feira, 21 de setembro de 2011 02:01
  • Valida se o campo data  está preenchido. Caso esteja Valida se está no formato correto.

     

    private bool ValidarCampoData()
    
    {
    
        DateTime dataOut;
    
        bool retornoMetodo = true;
    
    
    
    	if (txtCampoData.Text.Length == 10)
    
        {
    
            bool isValid = DateTime.TryParse(txtCampoData.Text, out dataOut);
    
            if (!isValid)
    
            {
    
                txtCampoData.BackColor = Color.LightYellow;
    
                retornoMetodo = false;
    
            }
    
        }
    
    	return retornoMetodo;
    
    }
    
    


     


    --
    Marque as respostas e ajude a melhorar a busca do fórum.


    Paulo até tentei utilizar a mesma teoria passada por ti e pelo Pablo, mas a duvida é

    se o metodo é boleano ele vai me retornar verdadeiro ou falso,

    ai preciso jogar o resultado numa variavel pra inserir no banco de dados

    se ela for falsa o   valordtcj = "null";

     

    se verdadeiro

      valordtcj = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y')";


    é aqui que eu me perco

     

     string valordtcj = string.Empty;
                  
                if  (mtbDataNasctoEsposa.Text.Length <10)
                    {
                        valordtcj = "null";
                    }
                    else
                    {
                        valordtcj = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y')";
                    }

    quarta-feira, 21 de setembro de 2011 02:14
  • Ficou melhor? Eu geralmente coloco um modo parecido com o que trabalho. Acho interessante a pessoa entender. Depois que você entende fica fácil de adaptar ao seu modo.

    DateTime? data = null;
    
    if (!string.IsNullOrEmpty(txtData.Text))
    {
             string dataValida = ValidarCampoData();
    
             if (dataValida != string.Empty)
             {
                 data = DateTime.Parse(txtData.Text);
             }
    }

        private string ValidarCampoData()
        {
            DateTime dataOut;
            string retornoMetodo = string.Empty;
    
            if (txtData.Text.Length == 10)
            {
                bool isValid = DateTime.TryParse(txtData.Text, out dataOut);
                if (!isValid)
                {
                    retornoMetodo = DateTime.Parse(txtData.Text).ToString();
                }
            }
    
            return retornoMetodo;
        }
    



    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    quarta-feira, 21 de setembro de 2011 02:20
  • Olá,

    aonde está 

     if  (mtbDataNasctoEsposa.Text.Length ==10)
    {
          // AJUDA Obtida pelo Sr Carlos e Fernando Bastos na comunidade do Orkut
          // conversão para inclusão no banco de dados  utilizei a função nativa do Mysql (str_to_date)
          valor = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y'), ";
                            
    }
    


    Tente substituir por:

    //Assume o valor como sendo Null por padrão.
    valor = "Null";
    
    //Testa se existem caracteres diferentes de barra
    if (mtbDataNasctoEsposa.Text.Replace("//", "").Trim() != String.empty)
    {
        DateTime data=new DateTime();
        //Testa se é uma data válida, caso seja substitui o null pela função do Date
        //Se não for uma data válida, manterá o null
        if (DateTime.TryParse(mtbDataNasctoEsposa.Text, out data))
        {
            valor = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y'), ";
        }
    }
    
    
    



    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C#
    MCTS Windows 7
    • Marcado como Resposta Grizante quinta-feira, 22 de setembro de 2011 11:56
    quarta-feira, 21 de setembro de 2011 12:04
  • Ficou melhor? Eu geralmente coloco um modo parecido com o que trabalho. Acho interessante a pessoa entender. Depois que você entende fica fácil de adaptar ao seu modo.

     

    DateTime? data = null;
    
    
    
    if (!string.IsNullOrEmpty(txtData.Text))
    
    {
    
             string dataValida = ValidarCampoData();
    
    
    
             if (dataValida != string.Empty)
    
             {
    
                 data = DateTime.Parse(txtData.Text);
    
             }
    
    }

        private string ValidarCampoData()
    
        {
    
            DateTime dataOut;
    
            string retornoMetodo = string.Empty;
    
    
    
            if (txtData.Text.Length == 10)
    
            {
    
                bool isValid = DateTime.TryParse(txtData.Text, out dataOut);
    
                if (!isValid)
    
                {
    
                    retornoMetodo = DateTime.Parse(txtData.Text).ToString();
    
                }
    
            }
    
    
    
            return retornoMetodo;
    
        }
    
    


     


    --
    Marque as respostas e ajude a melhorar a busca do fórum.

    fiz assim, mas não deu certo, pois preciso retornar para dentro da variavel valor

    private string ValidarCampoDataEsposa()
    {
    DateTime dataOut;
    string retornoMetodo = string.Empty;
    
    if (mtbDataNasctoEsposa.Text.Length == 10)
    {
    bool isValid = DateTime.TryParse(mtbDataNasctoEsposa.Text, out dataOut);
    if (!isValid)
    {
    retornoMetodo = DateTime.Parse(mtbDataNasctoEsposa.Text).ToString();
    }
    }
    return retornoMetodo;
    }
    
    
    
    DateTime? data = null;
    
    if (!string.IsNullOrEmpty(mtbDataNasctoEsposa.Text))
    {
    string datavalida = ValidarCampoDataEsposa();
    
    if (datavalida != string.Empty)
    {
    data = DateTime.Parse(mtbDataNasctoEsposa.Text);
    }
    }
    
    
    


    tenho que retornar os resultados para a variavel valor para a inclusão no BD
       string incluiSql = "insert into tbcadastro(cliente, nascto, endereco, bairro, cidade, uf, cep, conjugue, nasctoconjugue, fone) values (" +
                         "\'" + txtNome.Text + "\'," +
                         "str_to_date(\'" + mtbDataNascto.Text + "\', '%d/%m/%Y' ), " +
                         "\'" + txtEndereco.Text + "\', " +
                         "\'" + txtBairro.Text + "\', " +
                         "\'" + txtCidade.Text + "\', " +
                         "\'" + cbxUF.Text + "\', " +
                         "\'" + mtbCep.Text + "\', " +
                         "\'" + txtNomeEsposa.Text + "\', " +
                         valor +
                         "\'" + txtFone.Text + "\')";
                         cmdIncluir = new MySqlCommand(incluiSql, cn2);
                         cmdIncluir.ExecuteNonQuery();
                         MessageBox.Show("Inclusão efetuada com sucesso!", "Mensagem do Sistema");
                    }
    
    quarta-feira, 21 de setembro de 2011 13:01
  • Olá,

    aonde está 

     

     if  (mtbDataNasctoEsposa.Text.Length ==10)
    
    {
    
          // AJUDA Obtida pelo Sr Carlos e Fernando Bastos na comunidade do Orkut
    
          // conversão para inclusão no banco de dados  utilizei a função nativa do Mysql (str_to_date)
    
          valor = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y'), ";
    
                            
    
    }
    
    

     


    Tente substituir por:

     

    //Assume o valor como sendo Null por padrão.
    
    valor = "Null";
    
    
    
    //Testa se existem caracteres diferentes de barra
    
    if (mtbDataNasctoEsposa.Text.Replace("//", "").Trim() != String.empty)
    
    {
    
        DateTime data=new DateTime();
    
        //Testa se é uma data válida, caso seja substitui o null pela função do Date
    
        //Se não for uma data válida, manterá o null
    
        if (DateTime.TryParse(mtbDataNasctoEsposa.Text, out data))
    
        {
    
            valor = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y'), ";
    
        }
    
    }
    
    
    
    
    
    


     


    Peterson Roberto Oliveira Seridonio
    Desenvolvedor C#
    MCTS Windows 7


    Peterson

    resolveu , pelo menos se o cliente digitar algo errado na data nascto ele assume por padrao o null

    mas minha intenção era:

    se o cliente digitar uma data errada ele desse a mensagem de data errada e retornava para o cliente inserir a data correta, ou deixar sem digitar para assumir o valor null

    fraternos abraços

    Almir

     

     

     

     

     

    quarta-feira, 21 de setembro de 2011 14:34
  • Conforme sugerido pelo Peterson, embaixo do if, faça um else passando a mensagem. Criei uma variavél que não permite que inclua no banco.

            // click do botao gravar
            private void btnGrava_Click(object sender, EventArgs e)
            {
                bool Errors = false;
                if (txtNome.Text == string.Empty &&
                        mtbDataNascto.Text == string.Empty)
                    {
                        MessageBox.Show("Campos Nome e Data Nascto Obrigatórios", "Mensagem");
                        Errors = true;
                    }
                
                string valordtcj = string.Empty;
    
                //Assume o valor como sendo Null por padrão.
                valor = "Null";
    
                //Testa se existem caracteres diferentes de barra
                if (mtbDataNasctoEsposa.Text.Replace("//", "").Trim() != String.empty)
                {
                    DateTime data = new DateTime();
    
                    //Testa se é uma data válida, caso seja substitui o null pela função do Date
                    //Se não for uma data válida, manterá o null
                    if (DateTime.TryParse(mtbDataNasctoEsposa.Text, out data))
                    {
                        valor = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y'), ";
                    }
                    else
                    {
                        lblErro.Text = "Data Invalida. Por favor corrigir.";
                        Errors = true;
                    }
                }
    
                if (!Errors)
                {
                    string sqlUpdate = "update tbcadastro set " +
                    "cliente ='" + txtNome.Text.Trim() + "'," +
                    "nascto = str_to_date(\'" + mtbDataNascto.Text + "\', '%d/%m/%Y'), " +
                    "endereco = '" + txtEndereco.Text + "'," +
                    "bairro = '" + txtBairro.Text + "'," +
                    "cidade = '" + txtCidade.Text + "'," +
                    "uf = '" + cbxUF.Text + "'," +
                    "cep = '" + mtbCep.Text + "'," +
                    "conjugue = '" + txtNomeEsposa.Text + "'," +
                    "nasctoconjugue = " + valordtcj + "," +
                    "fone = \'" + txtFone.Text + "\' " +
                    " where codigocliente = \'" +
                    dtgCadastro[0, linhaClick].Value.ToString() + "\'";
    
                    MySqlCommand cmdAlterar = new MySqlCommand(sqlUpdate, dbConexao);
                    cmdAlterar.ExecuteNonQuery();
                    MessageBox.Show("Registro Alterado com Sucesso!!!", "Mensagem");
                    limpar();
                    panel2.Visible = true;
                    atualizaGrid();
    
                    btnExcluir.Enabled = false;
                    btnAlterar.Enabled = false;
                    btnNovo.Enabled = true;
                    btnCancelar.Enabled = false;
                    btnGrava.Enabled = false;
                    travaJanelas();
                    txtNome.Focus();
                }
            }
    

     


    wWw . Guilherme Ferrera . CoM
    quarta-feira, 21 de setembro de 2011 14:51
  • Guilherme

    do jeito que me passou ate quando o cliente deixar em branco ele impedi de digitar

    eu quero que somente quando o cliente digitar a data errada tipo (33/13/1900) ou não preencher tudo somente parcial a maskara (33/__/__) ai retorna mensagem para o cliente ter duas opções

    ou deixa em branco sem digitar a data ou colocar uma data correta

     

    fraternos abraços

     

    quarta-feira, 21 de setembro de 2011 15:23
  • Mesmo com esse tanto de exemplo ainda não resolveu? Não conseguiu adaptar o código ao seu problema?

    Só reza "braba".


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    quarta-feira, 21 de setembro de 2011 15:35
  • resolver , resolveu, como disse anteriormente.. não vai causar mais erro de execução caso o cliente digite algo errado no campo nascto da esposa, antes dava erro agora assume null,

    só queria implementar agora se possivel um aviso para retornar ao cliente para corrigir a data ou deixar sem preencher antes de prosseguir a execução.

     

    fraternos abraços

    desculpa a insistencia.. é que sou iniciante cabeça dura.

     

     

     

    quarta-feira, 21 de setembro de 2011 15:41
  • Cara,é só colocar um MessageBox.Show no seu metodo que faz a validação da data... vc ainda pode configurar o messagebox para exibir o icone de erro e aquele som "pã" que o windows solta.. se liga...

    MessageBox.Show("Typical installation is strongly recommended.", 
    		"Install information", MessageBoxButtons.OK, 
    			MessageBoxIcon.Information);
    


    quarta-feira, 21 de setembro de 2011 16:26
  • Ou ainda:

     else
    {
    lblErro.Text = "Data Invalida. Por favor corrigir.";
    Return;
    }

    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    quarta-feira, 21 de setembro de 2011 16:38
  • eu não sei se eu não estou conseguindo repassar o que quero para voces,

    quando coloco a messagebox, ele não deixa incluir se a data nao tiver preenchida corretamente.

    eu quero que:

    se a data estiver preenchida errada de a mensagem, igual a que implementei.

    mas quero que o programa apos de essa mensagem pernita que:

    o cliente corrija a data (isso ele ta focanco)

    mas que deixe implementar caso o cliente deixe sem preencher a data

    do jeito que esta o cliente é obrigado colocar uma data valida

     

       
    

     

     

    quarta-feira, 21 de setembro de 2011 17:57
  • eu não sei se eu não estou conseguindo repassar o que quero para voces,

    quando coloco a messagebox, ele não deixa incluir se a data nao tiver preenchida corretamente.

    eu quero que:

    se a data estiver preenchida errada de a mensagem, igual a que implementei.

    mas quero que o programa apos de essa mensagem pernita que:

    o cliente corrija a data (isso ele ta focanco)

    mas que deixe implementar caso o cliente deixe sem preencher a data

    do jeito que esta o cliente é obrigado colocar uma data valida

     

       
    
    

     

     


       bool Errors = false;
    
                        valor = "null,";
                        if (mtbDataNasctoEsposa.Text.Replace("//", "").Trim() != string.Empty)
                        {
                            DateTime data = new DateTime();
                            //Testa se é uma data válida, caso seja substitui o null pela função do Date
                            //Se não for uma data válida, manterá o null
    
                            if (DateTime.TryParse(mtbDataNasctoEsposa.Text, out data))
                            {
                                valor = "str_to_date(\'" + mtbDataNasctoEsposa.Text + "\', '%d/%m/%Y'), ";
                            }
                            else
                            {
                                MessageBox.Show("Preencha corretamente a data ou deixe sem preencher", "Mensagem de Alerta");
                                Errors = true;
                                mtbDataNasctoEsposa.Focus();
                                mtbDataNasctoEsposa.Clear();
                                return;
                            }
    
                        }
                        if (!Errors)
                        {
    
                            string incluiSql = "insert into tbcadastro(cliente, nascto, endereco, bairro, cidade, uf, cep, conjugue, nasctoconjugue, fone) values (" +
                            "\'" + txtNome.Text + "\'," +
                            "str_to_date(\'" + mtbDataNascto.Text + "\', '%d/%m/%Y' ), " +
                            "\'" + txtEndereco.Text + "\', " +
                            "\'" + txtBairro.Text + "\', " +
                            "\'" + txtCidade.Text + "\', " +
                            "\'" + cbxUF.Text + "\', " +
                            "\'" + mtbCep.Text + "\', " +
                            "\'" + txtNomeEsposa.Text + "\', " +
                            valor +
                            "\'" + txtFone.Text + "\')";
                            cmdIncluir = new MySqlCommand(incluiSql, cn2);
                            cmdIncluir.ExecuteNonQuery();
                            MessageBox.Show("Inclusão efetuada com sucesso!", "Mensagem do Sistema");
                        }
                        panel2.Visible = true;
                        limpar();
                        travaJanelas();
                        atualizaGrid();
                        btnIncluir.Enabled = false;
                        btnCancelar.Enabled = false;
                        btnNovo.Enabled = true;
                        txtNome.Focus();
                    }
                }
                else
                {
                    MessageBox.Show("Obrigatório o preenchimento dos campos", "Mensagem de Alerta");
                    txtNome.Focus();
                }
            }
    

    quarta-feira, 21 de setembro de 2011 18:01