none
cambiar formato de fecha RRS feed

  • Pregunta

  • buenas noche gente del foro.....verán estoy teniendo problemas con el formato de la fecha que la ingreso en un maskedText para buscarla en una bd....esta ultima guarda la fecha en este formato aaaa-mm-dd....el código es el siguiente:
    private void btnBuscar_Click(object sender, EventArgs e)
            {
                if (txtFecha.MaskFull == false)
                {
                    DialogResult ds = MessageBox.Show(this, "DEBE INGRESAR LA FECHA EN EL FORMATO CORRECTO DD/MM/AAAA", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    this.Text = ds.ToString();
                }
                else
                {
                    try
                    {
                        conexion.Open();
                        string query = "SELECT * FROM trazabilidad WHERE fecha LIKE '%' + @fecha + '%'";
                        SqlCommand consulta = new SqlCommand(query, conexion);
                        DateTime fecha =Convert.ToDateTime(txtFecha.Text);
                        consulta.Parameters.Add("@fecha", fecha);
                        SqlDataAdapter adaptador = new SqlDataAdapter(consulta);
                        DataTable datos = new DataTable();
                        adaptador.Fill(datos);
                        dgv2.AutoGenerateColumns = false;
                        dgv2.DataSource = datos;
                        dgv2.Columns[0].DataPropertyName = "id_trazabilidad";
                        
                        
                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                    finally
                    {
                        conexion.Close();
                    }
                }
            }

    viernes, 28 de abril de 2017 22:20

Respuestas

  • hola

    >>estoy teniendo problemas con el formato de la fecha que la ingreso en un maskedText

    porque un maskedText y no un Datetimepicker ? o sea arrancas usando el control incorrecto

    >>esta ultima guarda la fecha en este formato aaaa-mm-dd

    porque guardas la fecha con formato? eso esta mal, la fecha se guarda en una columna del tipo datetime y a este no le afecta el formato

    o sea arrancas con dos puntos en contra, usando un tipo incorrecto en el campo de la tabla y el control incorrecto para seleccionar la fecha

    Ademas con la fechas no aplica el like, si lo usas eso tambine esta mal

    string query = "SELECT * FROM trazabilidad WHERE fecha = @fecha ";
    SqlCommand consulta = new SqlCommand(query, conexion);
    consulta.Parameters.AddWithValue("@fecha", Convert.ToDateTime(txtFecha.Text));
    
    SqlDataAdapter adaptador = new SqlDataAdapter(consulta);
    DataTable datos = new DataTable();
    adaptador.Fill(datos);

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 30 de abril de 2017 18:34

Todas las respuestas

  • Hola Gonzalo,

    Qué error te sale? dónde no lo puedes controlar?

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    sábado, 29 de abril de 2017 0:14
  • Si quieres la fecha como 'aaaa-mm-dd', no basta con usar el Convert.ToDateTime(txtFecha.Text) porque eso devuelve un objeto datetime, que el parameters.add convertirá en un parámetro del tipo SqlDateTime, y eso fallará al pasárselo al LIKE porque ese operador es para campos de tipo texto, no fecha.

    Si estás seguro de que la columna en la base de datos es de tipo texto, y en consecuencia es válido el LIKE, y además la fecha ya la están tecleando en el textbox en el mismo formato que tiene en la base de datos, entonces pasa el texto directamente:

    consulta.Parameters.AddWithValue("@fecha", txtFecha.Text);

    y prescinde de la conversión a DateTime, ya que en este caso no se usa un datetime por ningún sitio.

    sábado, 29 de abril de 2017 10:34
    Moderador
  • GonzaloCabrera,

    ¿Qué tipo de dato es la columna [fecha] en la base de datos? ¿date, datetime, varchar(n)?


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 29 de abril de 2017 17:54
  • hola

    >>estoy teniendo problemas con el formato de la fecha que la ingreso en un maskedText

    porque un maskedText y no un Datetimepicker ? o sea arrancas usando el control incorrecto

    >>esta ultima guarda la fecha en este formato aaaa-mm-dd

    porque guardas la fecha con formato? eso esta mal, la fecha se guarda en una columna del tipo datetime y a este no le afecta el formato

    o sea arrancas con dos puntos en contra, usando un tipo incorrecto en el campo de la tabla y el control incorrecto para seleccionar la fecha

    Ademas con la fechas no aplica el like, si lo usas eso tambine esta mal

    string query = "SELECT * FROM trazabilidad WHERE fecha = @fecha ";
    SqlCommand consulta = new SqlCommand(query, conexion);
    consulta.Parameters.AddWithValue("@fecha", Convert.ToDateTime(txtFecha.Text));
    
    SqlDataAdapter adaptador = new SqlDataAdapter(consulta);
    DataTable datos = new DataTable();
    adaptador.Fill(datos);

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 30 de abril de 2017 18:34