Funciones year y month con access

Trabajo con bbdd Access, y en una página ASP, quiero recuperar todos los registros que sean de un mes y un año determinados que los recibo como parámetros.
Access no me acepta las funciones year y month o no se si las estoy usando bien.
¿me podrías decir como escribirias vos la sentencia Select?

3 Respuestas

Respuesta
1
Yo acabo de probar con esta consulta en el Access y anda perfecto:
SELECT * FROM Table1 WHERE Month(fecha) = 11 AND Year(fecha) = 2002;
Hola de nuevo...
Siguen sin funcionarme las funciones year y month. Me salta un "provider error". Puede ser algo mal configurado en access.
Gracias. Saludos
Mandame la línea donde estás componiendo la sentencia SQL.
sql="Select * from Datos where Year(FECHA_VTO)=2003"
rs.open sql
Esta es la sentencia. aperentemente esta bien pero no me funciona.
¿Puede ser algo de la conexión (ej. odbc...)?
Gracias
Creería que es un problema de conexión. Podes hacer lo siguiente: cópiate la sentencia y pruébala directamente en el Access. Si eso te anda, definitivamente es un problema en la conexión. De ser así, mandame como te estás conectando y te ayudo.
¿Cómo hago para probarla en access?
Mi conexión es la siguiente:
Dim cnn
Set cnn = Server.CreateObject ("ADODB.Connection")
cnn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Dir\base.mdb;"
Set rs=CreateObject("ADODB.Recordset")
rs.ActiveConnection=cnn
Gracias
Te doy el paso a paso:
Para definir el ODBC hacés lo siguiente:
Herramientas Administrativas -> Orígenes de datos (ODBC) -> DSN de Sistema -> Agregar
Una vez acá, te queda elegir el .mdb y el nombre que querés ponerle a el DSN.
Un ejemplo de código es el siguiente (donde pongo "DSN=Probando", en lugar de Probando tenés que poner el DSN que creaste vos):
<%
'OBLIGO A DEFINIR LAS VARIABLES ANTES DE USARLAS
Option Explicit
'CREO LA CONEXION Y LA ABRO
Dim oConnection
Set oConnection = Server.CreateObject("ADODB.Connection")
oConnection.Open "DSN=Probando"
'CREO EL RECORDSET Y LO CARGO
Dim oRecordset
'Set oRecordset = Server.CreateObject("ADODB.Recordset") EN ESTE CASO ESTO NO ES NECESARIO
Set oRecordset = oConnection.Execute("SELECT * FROM AUTHORS")
'RECORRO EL RECORDSET MIENTRAS NO SE ACABE E IMPRIMO EL PRIMER CAMPO
While Not oRecordset.EOF
Response.Write(oRecordset.Fields(0).value)
'ME MUEVO AL SIGUIENTE
oRecordset.MoveNext
Wend
'DESTRUYO EL RECORDSET
oRecordset.Close
Set oRecordset = Nothing
'DESTRUYO LA CONEXION
oConnection.Close
Set oConnection = Nothing
%>
Respuesta
1
Access acepta las tres cosas. Suponiendo que el mes y el año los pases respectivamente en los parámetros "mes" y "anyo" de la URL, la condición de la sentencia SQL sería así:
... WHERE Year(Fecha)=" & request("anyo") & " AND Month(Fecha)=" & request("mes")
Hola de nuevo...
Siguen sin funcionarme las funciones year y month. Me salta un "provider error". Puede ser algo mal configurado en access.
Gracias. Saludos
Ambas funciones vienen implementadas en Access desde al menos la versión 97. ¿Seguro qué el campo sobre el que las aplicas es del tipo Fecha/Hora?
Respuesta
1
El like del access funciona de diferente que, por ejemplo, el sql server: el comodín es * en lugar de %, el error te puede venir por ahí. En cuanto al year a mí me funciona, poniendo directamente:
Year([fecha_pr]) AS Expr1
Donde el campo fecha_pr es siempre de tipo Fecha/hora y no carácter.
Suerte.
Hola de nuevo...
Siguen sin funcionarme las funciones year y month. Me salta un "provider error". Puede ser algo mal configurado en access.
Gracias. Saludos
¿Has probado a conectarte mediante ODBC?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas