Consulta con fechas

Otro problema que a veces nos causa programar contra Sql Server, es cuando se inscrustan consultas dentro del software (por eso siempre es mejor utilizar procedimientos almacenados), cosa que no es lo recomendable, pero que a veces es necesario.

En Visual Basic (versión 2005) tenía la siguiente consulta que habia armado:

Consulta1 = "Update Tabla1 Set Fecha = '" & Fecha & "' Where CodigoId=" + CodigoId.Trim

Es decir vamos a cambiar la tabla Tabla1, la fecha y lo filtramos por CodigoId. La variable Fecha es del tipo Datetime, y la obtenemos cuando el usuario elige una fecha en un Datetimepicker del formulario. No se nota bien pero se utilizan comillas simples (') para delimitar la fecha en la consulta.

Si esa consulta, tal como está la ejecutamos utilizando un SqlCommand, nos dará un error, diciendo que no se pudo efectuar la conversión de cadena a datetime.

El error se debe a que al guardar el valor del DatetimePicker en la variable Fecha, se guarda con hora también, y ese dato al parecer no permite ejecutar la consulta. Ahora solo ponemos en la consulta la parte de la fecha y el mensaje de error no volverá a salir, y la consulta se ejecutará correctamente.

Consulta1 = "Update Tabla1 Set Fecha = '" & Fecha.ToString.Substring(0, 10) & "' Where CodigoId=" + Codigo.Trim

Parece sencillo, pero me tomó unos minutos descubrir la forma de solucionarlo.

No hay comentarios: