Principales respuestas
cambiar formato de fecha

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(); } } }
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);
saludosLeandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Joyce_ACModerator martes, 2 de mayo de 2017 21:02
- Marcado como respuesta Joyce_ACModerator viernes, 5 de mayo de 2017 13:52
Todas las respuestas
-
-
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.
-
¿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. -
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);
saludosLeandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Joyce_ACModerator martes, 2 de mayo de 2017 21:02
- Marcado como respuesta Joyce_ACModerator viernes, 5 de mayo de 2017 13:52