{Acceso} La fecha y el día de la semana
Burgerdash
-
burgerdash Mensajes publicados 47 Estado Miembro -
burgerdash Mensajes publicados 47 Estado Miembro -
Hola,
ya he recurrido a su ayuda en este hilo (https://forums.commentcamarche.net/forum/affich-16037923-access-tri-de-doublons). Habiendo progresado un poco, me enfrento a nuevos problemas y pensé que era mejor crear un nuevo hilo porque el problema no es el mismo. ¿Debí haber publicado como respuesta?
En mi base de datos de Access 2003 tengo un campo "Fecha" donde ingreso una fecha en el formato dd/mm/aaaa, y donde luego aparece en el formato "NombreDelDía dd mes aaaa". Por nombre del día, me refiero a lunes, martes, miércoles... Perfecto, justo necesito saber cuántos clientes vinieron los lunes, cuántos los martes, cuántos los miércoles... Desafortunadamente, el nombre del día se muestra en la pantalla pero no es utilizable por la base de datos. De hecho, no puedo clasificar mis datos en una consulta de forma que pueda agruparlos por día de la semana, solo en orden cronológico bobo. No sé si estoy siendo realmente claro. En caso de duda, nada como un buen ejemplo. Aquí está lo que ingreso en mi tabla:
Clientes | Fecha de compra
Cliente 1 | 07/01/10
Cliente 2 | 08/01/10
Cliente 3 | 14/01/10
Cliente 4 | 16/01/10
Cliente 5 | 16/01/10
Esto es lo que se muestra cuando mi cursor sale del campo "Fecha de compra":
Clientes | Fecha de compra
Cliente 1 | sábado 7 de enero de 2010
Cliente 2 | domingo 8 de enero de 2010
Cliente 3 | sábado 14 de enero de 2010
Cliente 4 | lunes 16 de enero de 2010
Cliente 5 | lunes 16 de enero de 2010
Este es el tipo de información que me gustaría obtener:
Lunes: 2 clientes
Martes: 0 cliente
Miércoles: 0 cliente
Jueves: 0 cliente
Viernes: 0 cliente
Sábado: 2 clientes
Domingo: 1 cliente
(en un bonito gráfico, por supuesto, pero eso después ya sé cómo hacerlo)
Esto es lo que actualmente puedo obtener:
Enero: 5 clientes
O
07/01/10: 1 cliente
08/01/10: 1 cliente
14/01/10: 1 cliente
16/01/10: 2 clientes
He intentado una antigua táctica de indio consistente en agregar un campo "día de la semana" al lado de la fecha, donde simplemente copio el nombre del día de la semana que se muestra al lado. Pero:
1. es tedioso de usar
2. tengo la impresión de que estoy usando un martillo para abrir un huevo Kinder (seguramente existe una función que puede evitar estas molestias... ¿verdad?)
3. mis datos terminan clasificados en orden alfabético por día (Domingo, jueves, lunes...), y eso se ve feo.
... ¿Puede alguien ayudarme? :x
ya he recurrido a su ayuda en este hilo (https://forums.commentcamarche.net/forum/affich-16037923-access-tri-de-doublons). Habiendo progresado un poco, me enfrento a nuevos problemas y pensé que era mejor crear un nuevo hilo porque el problema no es el mismo. ¿Debí haber publicado como respuesta?
En mi base de datos de Access 2003 tengo un campo "Fecha" donde ingreso una fecha en el formato dd/mm/aaaa, y donde luego aparece en el formato "NombreDelDía dd mes aaaa". Por nombre del día, me refiero a lunes, martes, miércoles... Perfecto, justo necesito saber cuántos clientes vinieron los lunes, cuántos los martes, cuántos los miércoles... Desafortunadamente, el nombre del día se muestra en la pantalla pero no es utilizable por la base de datos. De hecho, no puedo clasificar mis datos en una consulta de forma que pueda agruparlos por día de la semana, solo en orden cronológico bobo. No sé si estoy siendo realmente claro. En caso de duda, nada como un buen ejemplo. Aquí está lo que ingreso en mi tabla:
Clientes | Fecha de compra
Cliente 1 | 07/01/10
Cliente 2 | 08/01/10
Cliente 3 | 14/01/10
Cliente 4 | 16/01/10
Cliente 5 | 16/01/10
Esto es lo que se muestra cuando mi cursor sale del campo "Fecha de compra":
Clientes | Fecha de compra
Cliente 1 | sábado 7 de enero de 2010
Cliente 2 | domingo 8 de enero de 2010
Cliente 3 | sábado 14 de enero de 2010
Cliente 4 | lunes 16 de enero de 2010
Cliente 5 | lunes 16 de enero de 2010
Este es el tipo de información que me gustaría obtener:
Lunes: 2 clientes
Martes: 0 cliente
Miércoles: 0 cliente
Jueves: 0 cliente
Viernes: 0 cliente
Sábado: 2 clientes
Domingo: 1 cliente
(en un bonito gráfico, por supuesto, pero eso después ya sé cómo hacerlo)
Esto es lo que actualmente puedo obtener:
Enero: 5 clientes
O
07/01/10: 1 cliente
08/01/10: 1 cliente
14/01/10: 1 cliente
16/01/10: 2 clientes
He intentado una antigua táctica de indio consistente en agregar un campo "día de la semana" al lado de la fecha, donde simplemente copio el nombre del día de la semana que se muestra al lado. Pero:
1. es tedioso de usar
2. tengo la impresión de que estoy usando un martillo para abrir un huevo Kinder (seguramente existe una función que puede evitar estas molestias... ¿verdad?)
3. mis datos terminan clasificados en orden alfabético por día (Domingo, jueves, lunes...), y eso se ve feo.
... ¿Puede alguien ayudarme? :x
Configuración: Windows XP Firefox 3.5.7
Enlaces relacionados:
- ACCESS = recuperar valor de la columna 2 ?
- Crear una fecha de caducidad ACCESS
- conexión a la base de datos Access desde JMerise
- Access - El separador del campo de especificación es idéntico
- Consulta de Access y gestión de campos vacíos
- Acceso: Cómo extraer el día del año (1-365) a partir de una fecha
32 respuestas
- 1
- 2
Siguiente
-
Hola,
mira la función datepart, te permite extraer lo que quieras de una fecha...
--
A+ Blux"Los tontos se atreven a todo. Es incluso por eso que se les reconoce"
-
Hola
1° Has hecho bien en abrir un nuevo post, cada post tiene su problema
Entonces, para tu problema, ¿quieres la suma de todas las personas que vinieron un lunes durante un mes?
o
¿todas las personas que vinieron un lunes en particular? -
Hola Burgerdash,
Aquí está la sintaxis para obtener el valor literal de <Champ_date>:
Día literal: Formato([<Champ_date>];"\ dddd")
- A introducir en 'campo' de la interfaz gráfica.
- Esto, combinado con un agrupamiento, le permitirá obtener el resultado deseado.
Atentamente
--
La ciencia solo encuentra lo que existe desde siempre.
REEVES Hubert.-
[Lo siento por el mensaje de arriba, manejo fallido... :x]
Blux, ¿cómo "miro la función datepart"?
moiced59, de hecho quiero tener la suma de todas las personas que vinieron un lunes desde la apertura de mi base de datos, lo mismo para el martes, el miércoles...
Jean-Jacques, voy a intentar eso de inmediato :) Gracias por su ayuda.
-
-
La función datepart está accesible en la ayuda...
--
A+ Blux"Los idiotas se atreven a todo. Es incluso por eso que los reconocemos"
-
Blux, he creado una consulta que contiene el campo "Fecha" con la operación Agrupamiento y el criterio "DatePart(sem, fecha, vbMonday)", y un campo "Número de facturas creadas" con la operación Contar. Por un lado, creo que debo poner algo en lugar de "fecha", pero no entiendo qué, y por otro lado Access me presenta el siguiente mensaje de error que me impide guardar la consulta: "La expresión introducida contiene una función cuyo número de argumentos no es correcto."
Jean_Jacques, ¿debo 1. crear una nueva consulta en modo diseño
2. escribir esta fórmula en el cuadro de arriba a la izquierda
3. reemplazar <campo_fecha> con el nombre del campo que contiene las fechas de creación de facturas
4. elegir la operación "Agrupamiento"?
¿Porque si hago eso, Access me responde que cometo un error de sintaxis...?-
-
burgerdash,
De hecho, hay que reemplazar <Champ_date> por el nombre del campo que contiene la información 'fecha'.
Pensé que esta convención era conocida ... Lo siento.
Nota: ¡Hay que copiar la línea completa a continuación! Y esto, sea cual sea el modo, creación o modificación...
Día literal: Formato([<Champ_date>];"\ dddd")
¡A+!
--
La ciencia solo encuentra lo que ha existido desde siempre.
REEVES Hubert.
-
-
Lo mejor sería que crees un nuevo campo con el nombre del día, por ejemplo: día y luego haz:
select count(cliente)
from ...
group by día -
baah incluso con relaciones no será un problema, lo encuentro simple de aplicar y siempre será útil.
-
Blux, lo siento, pero no entiendo tus explicaciones. Aparentemente, en mi caso, en "DatePart(intervalo, fecha [, primer_día_sem] [, primera_semana_año] )" debo reemplazar "intervalo" por "sem" para solicitar un día de la semana, y "primer_día_sem" por "vbMonday" porque quiero que el lunes sea el primer día de la semana. La primera semana del año me da igual, y este criterio es opcional. Luego, aquí está lo que me dice la ayuda respecto a "fecha":
"Argumento fecha obligatorio. Variant (Date) a evaluar."
¿Les parece claro a ustedes? Sospecho que Microsoft ha escrito su documentación de una manera que solo aquellos que ya saben cómo usar el programa entienden ^^
Concretamente, debo reemplazar "fecha" por "Nomdelatable_Nomduchamp" a tratar?
Ced, es lo que intenté al principio, pero eso obligaba a copiar el nombre del día cuando ya se muestra en el campo vecino! Es tonto, estoy seguro de que Access puede hacer eso solo! -
-
Yo tampoco, me he enredado desde el principio... :-)
Es el formato correcto que hay que usar, como decía Jean-Jacques, con una matización: como estamos en SQL, hay que usar la versión en inglés:
SELECT format(campo_fecha,"dddd") FROM ...
para la fecha de hoy, devuelve sábado.
Disculpen por haberlos embadurnado con un error :-(
--
A+ Blux"Los tontos se atreven a todo. Es incluso por eso que los reconocemos"
- Para información,
Aquí está el copia/pega (adaptado) de mi prueba SQL.
Funciona correctamente en mi versión Access 2000.
SELECT Month([<campo_fecha>]) AS N°, Format([<campo_fecha>],"\ dddd") AS [Día literal]
FROM <tabla> GROUP BY Month([<campo_fecha>]), Format([<campo_fecha>],"\ dddd");
¡Hasta luego!
--
La ciencia solo encuentra lo que existe desde siempre.
REEVES Hubert.
-
-
Ced, bueno, es según los consejos de blux que estoy tratando de usarlo... El objetivo es obtener en una consulta datos clasificados por período de la semana sin tener que modificar los datos de la tabla (porque necesito la fecha completa para otras consultas, y quiero evitar la redundancia de información como
Fecha | Día
sábado 7 de enero de 2010 | Sábado
(lo cual es molesto para la persona que tiene que ingresar la información día a día y ocupa espacio en el servidor)). -
Ah, de acuerdo XD Gracias Ced por insistir, y gracias blux por perseverar.
Bueno, entonces voy a generar una columna Fecha | Factura | Agrupación | SELECT format(Fecha,"dddd") FROM ... en mi consulta?
Reacción de Access: "Esta expresión contiene una subconsulta errónea. Coloque la subconsulta entre paréntesis."
¿Se supone que debo reemplazar los dddd o ... por algo? -
re
no entiendo nada con el formato del campo, vas a obtener el día ¿ok? pero eso ya lo tiene, aparentemente. -
ah ok, pensé que la fecha era en formato sábado 9 de enero de 2010.
-
Sin embargo, lo he probado y el SQL de Access no soporta el formato.
-
re
G nada, disculpa, tenía una referencia faltante, por eso no funcionaba, ¡lo siento! -
https://www.imagup.com
a la izquierda, mis datos de prueba en la tabla Factura (hay otros campos pero los he ocultado para ir al grano); a la derecha, lo que me gustaría obtener en una consulta, para luego quizás, en un mundo perfecto, sacar un bonito gráfico.
El campo rodeado en naranja es el que estoy editando. Así es como introduzco los datos, así es como se muestran. ¿De acuerdo?
El archivo fue creado en 2003, pero ahora estoy en 2007 para el fin de semana. -
```sql SELECT Count(lundi.nom) AS total, Format(date, 'dddd') AS Expr1
FROM lundi
GROUP BY Format(date, 'dddd')
ORDER BY MIN(date); ``` -
Ced, no sé usar SQL. ¿Qué escribo dónde, en la herramienta gráfica de creación de consultas?
Gracias por los esfuerzos que están haciendo para ayudarme, espero poder devolverles pronto el favor. -
entonces tu campo de fecha ya estaba bien en el formato sábado 9 de enero de 2009
-
Sí, pero en el estado actual no sé cómo utilizar en una consulta este "sábado" que se muestra. Esa es toda la dificultad del problema, si me permiten.
- 1
- 2
Siguiente