none
Fecha y hora en una consulta de actualizacion RRS feed

  • Pregunta

  • consulta = "UPDATE Citas SET Cliente = '" & dclave & "', Servicio = '" & dclaveservicio & "' WHERE (((Citas.Fecha)=# " & dfecha & "#) AND ((Citas.Hora)=# " & dhora & "#));" me da resultado lo siguiente 

    update citas set cliente = '0001', servicio = '01' where fecha = #03/02/2016# and hora = #14:00#;

    Diseñe la consulta en el asistente de access y me la pone asi:

    UPDATE Citas SET Citas.Cliente = "0001", Citas.Servicio = "01", Citas.Status = "p"
    WHERE (((Citas.Fecha)=#1/22/2016#) AND ((Citas.Hora)=#12/30/1899 9:30:0#));

    Me parece que la correcta es esta ultima, pero no se como generarla teniendo los datos de la fecha y hora en variables, dado que no genera el formato americano y en la hora no incluye la cadena completa. Alguien me puede decir que se hace para almacenar la fecha en una variable con formato americano

    miércoles, 3 de febrero de 2016 20:22

Respuestas

  • Cuando concatenes la fecha, fuérzale el formato. Por ejemplo, donde dice ...& laFecha &..., cámbialo por ...& laFecha.ToString("MM/dd/yyyy") & ...

    Eso presume que la variable "laFecha" es de tipo DateTime (no servirá si es de tipo String). Ojo a "MM" en mayúsculas, si lo pones en minúsculas significa "minuto" en lugar de "mes".

    Sin embargo, es bastante mala idea trabajar de esta manera. Lo ideal es que las sentencias se parametricen, en lugar de concatenarles los datos a buscar. La forma de hacerlo depende de cómo estés ejecutando la sentencia, por ejemplo, con el proveedor de OleDb hay que poner una "?" en lugar de la fecha y luego asignarle un OleDbParameter al OleDbCommand para darle el valor que tiene que meter en lugar de la "?". Esto hace que no te tengas que preocupar del formato, porque lo gestiona internamente el parámetro. Sobre este tema se han vertido ríos de tinta, así que te debería ser muy fácil encontrar ejemplos y tutoriales si haces una búsqueda en la Red.

    jueves, 4 de febrero de 2016 6:24