Reporte por semana access y excel

Tengo una base datos en access y desde excel genero un reporte por fechas con la siguiente instrucción:

sql = "TRANSFORM Sum(CantD) SELECT NumE, Nombre FROM Tabla1 " & _
  "WHERE FechaMov Between #" & F_Inicial & "# And #" & F_Final & "# " & _
  "GROUP BY NumE, Nombre order by NumE DESC PIVOT FORMAT(FechaMov,""mm/dd/yyyy"")"

Excel: En B1 tengo la fecha inicial y B2 la fecha final, ejecuto la macro y todo bien

Ahora lo que pretendo es generar el reporte por semana, de acuerdo al rango de fecha inicial y final, y no se como hacer eso, no se como modificar la sentencia.

Agradezco de antemano sus comentarios y/o ayuda

2 respuestas

Respuesta
1

Lo puedes hacer de muchas formas. Por ejemplo

1º En consultas SQL. Si construyo una consulta

El resultado es

Inconveniente.- En este caso el valor de semana es texto, por lo que los ordena así. Si lo quiero bien, la construyo como

Es decir, transformo el valor texto a número( también se puede usar CInt), y en este caso, al abrirla

En caso de que vayas a usar código puedes utilizar Datepart(...

Por ejemplo

En este caso, en el evento Después de actualizar del cuadro de texto Texto376 le digo

Private Sub Texto376_AfterUpdate()
Texto378 = DatePart("ww", Texto376, vbSunday)
End Sub

Sin saber como tienes construido el informe, yo usaría

Docmd. Openreport"Clientes", acpreview,,"Datepart(""ww"", FechaMov) between Datepart(""ww"", Fechainicial) and Datepart(""ww"", Fechafinal)"

Gracias por responder

Como haría la modificación si la macro la tengo en un libro de excel, y estoy utilizando ADO, mi excel es versión 2010

Gracias

Saludos

Gracias con la siguiente instrucción que encontré me viene bien

Por si alguien le sirve la dejo

TRANSFORM Count(Pedidos.IdPedido) AS CuentaDeIdPedido
SELECT Pedidos.IdCliente, Count(Pedidos.IdPedido) AS [Total de IdPedido]
FROM Pedidos
WHERE (((Year([FechaPedido]))=1997))
GROUP BY Pedidos.IdCliente
PIVOT "Semana " & Format([FechaPedido],"ww"
Autor:  José Mª Fueyo
[MS MVP Access]

 Saludos

Te anticipo que no tengo ni idea de Excel, pero podrías traerte las fecha a una tabla Aux de Access y ya podrías trabajar libremente. Por ejemplo, supongamos que tengo un libro de Excel llamado Libro1

En la base de Access creo una tabla Auxuliar como

En cualquier evento, al activar un registro, al abrir, al hacer clic de un botón, etc le pongo

DoCmd. TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Aux", "C:\users\gonza\documents\borrar\libro1.xlsx", True

Es decir, me "traigo" de Excel los valores y ya puedo trabajar en Access

Lógicamente tienes que cambiar mi ruta por la tuya

Respuesta
1

Pruebe con esto:

sql = "Transform Sum(CantD) SELECT NumE, Nombre FROM Tabla1 " & _
"WHERE FechaMov Between #" & F_Inicial & "# And #" & F_Final & "# " & _
"GROUP BY NumE, Nombre order by NumE DESC PIVOT FORMAT(FechaMov,""Mm"")"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas