No coinciden tipo de datos en consulta SQL
Hola, tengo que hacer una consulta a una base de datos que me saque los resultados de las asistencias técnicas realizadas por la empresa en un periodo de tiempo a elegir. Para eso tengo dos dtpickers para que el usuario elija el rango de fecha en que quiere buscar. Tiene también la opción de ordenar por fecha de la Asistencia o por Código del técnico. El fragmento de código en que construyo la consulta SQL y la ejecuto es el siguiente:
If optOrde(0).Value = True Then orde = " ORDER BY CodTec" ' Ordena por código de técnico
If optOrde(1).Value = True Then orde = " ORDER BY Fecha" ' Ordena por fecha
If chkFiltro.Value = 1 Then ' Si se quiere sacar los resultados de un rango de fecha y no todos los resultados
If DTFiltroData(0).Value > DTFiltroData(1).Value Then 'Si la fecha inicial es mayor que la final
Notificacion 20 ' Avisa que la fecha inicial debe ser menor
Exit Sub ' y sale del procedimiento
End If
' Si el rango de fecha está bien introducido construimos la condición
filtro = " WHERE Fecha BETWEEN '" & DTFiltroData(0).Value & "' AND '" & DTFiltroData(1).Value & "'"
End If
' La sentencia SQL es la resultante de la siguiente unión de cadenas
SSql = "SELECT * FROM Asistencia" & filtro & orde
With frmAcceso
' Cerramos el recordset Asistencia si está abierto
FechaAsistencia
.Asistencia.Source = SSql
.Asistencia.CursorLocation = adUseClient
' Ejecutamos la consulta
.Asistencia.Open SSql, .Asistencias, adOpenKeyset, adLockOptimistic
' ****************************************************************
' Llegado a este punto me dice que no coinciden los tipos de datos e imagino que se debe a las fechas. ¿Qué hago? Gracias de antemano
If optOrde(0).Value = True Then orde = " ORDER BY CodTec" ' Ordena por código de técnico
If optOrde(1).Value = True Then orde = " ORDER BY Fecha" ' Ordena por fecha
If chkFiltro.Value = 1 Then ' Si se quiere sacar los resultados de un rango de fecha y no todos los resultados
If DTFiltroData(0).Value > DTFiltroData(1).Value Then 'Si la fecha inicial es mayor que la final
Notificacion 20 ' Avisa que la fecha inicial debe ser menor
Exit Sub ' y sale del procedimiento
End If
' Si el rango de fecha está bien introducido construimos la condición
filtro = " WHERE Fecha BETWEEN '" & DTFiltroData(0).Value & "' AND '" & DTFiltroData(1).Value & "'"
End If
' La sentencia SQL es la resultante de la siguiente unión de cadenas
SSql = "SELECT * FROM Asistencia" & filtro & orde
With frmAcceso
' Cerramos el recordset Asistencia si está abierto
FechaAsistencia
.Asistencia.Source = SSql
.Asistencia.CursorLocation = adUseClient
' Ejecutamos la consulta
.Asistencia.Open SSql, .Asistencias, adOpenKeyset, adLockOptimistic
' ****************************************************************
' Llegado a este punto me dice que no coinciden los tipos de datos e imagino que se debe a las fechas. ¿Qué hago? Gracias de antemano
prueba a poner la fecha en formato dd/mm/yyyy ó en mm/dd/yyyy .
Prueba tb a ponerla entre # en vez de entre '.
Sera una forma u otra dependiendo de varias razones (tipo de conexion, formato de fecha en windows...)
Espero que esto te ayude
Rafa
Prueba tb a ponerla entre # en vez de entre '.
Sera una forma u otra dependiendo de varias razones (tipo de conexion, formato de fecha en windows...)
Espero que esto te ayude
Rafa
Gracias Rafa por tu ayuda. He usado # y bueno, me voy acercando... ahora ya no me dá un fallo en los datos, pero al hacer el between me funciona para algunas fechas y para otras no. En fin, gracias por tu ayuda. Ahora ya tendré que ir afinando poco a poco... :-) Saludos,
^Neo^
^Neo^