Agrupar empleados por fechas en formulario

Les escribo nuevamente por aquí con un problema que tengo, la cosa es así, tengo una tabla de empleados la cual tiene su consulta y su formulario y me han pedido que coloque en el formulario para buscar por rango de fechas por meses osea si hago la planilla de junio se me guarda con ese mes ahora le toca a la planilla de julio yo me puedo traer los datos de junio pero sin dañar ese mes osea me traigo los datos de junio como referencia de que nunca cambian pero que se graben para julio para poder modificarlos y grabarlos como julio y así sucesivamente para el mes de agosto ya con la ayuda de Sveinbjorn pude traer los datos desde un cuadro combinado y grabarlos en la tabla por eso no hay problema pero ahora como puedo agruparlo por meses porque hasta cuando se van a imprimir las planillas de pago o las boletas salen todas las que se han grabado en la tabla o consulta y la idea es que me de los 19 empleados por meses, 19 empleados el mes de junio y los mismos 19 en julio y 19 el mes de agosto y así.

2

2 respuestas

Respuesta
2

Yorman: No acaba de quedarme claro lo que pretendes, por lo que te adjunto un par de enlaces con soluciones de visualización, de ejemplos que tengo en Mediafire.

http://www.mediafire.com/file/gjg9euk8odytbpx/RefCruzadasMesesA%25C3%25B1os.rar/file 

Y éste otro:

http://www.mediafire.com/file/zz1dw212k33mxet/FiltroA%25C3%25B1oActualYEntreFechas.rar/file 

Si tu petición va en línea de alguno de ellos me comentas y podemos afinar un poco más.

Un saludo >> Jacinto

Hola jacinto disculpa la demora en responderte y te cuento que ninguna de las dos es te explico a ver fíjate yo tengo la tabla empleados una sola tabla con todos los datos nombre, apellidos, salarios, deducciones, etc lo que se quiere aquí es que si por ejemplo yo hice la planilla de pago de los 19 empleados en el mes de junio salio todo bien y se imprimieron las boletas ahora le toca a la planilla de pago del mes de julio pero hubo cambios en algunos empleados de los 19 en total entonces yo quiero traerme los 19 empleados con los mismos datos del mes anterior no importa que estén repetidos la cosa es que si hay algún cambio en un bono o en un préstamo que haya pedido el empleado se edite y ya pero que no me afecte el mes de junio solo me trae los datos pero con fecha julio para que si dentro de algunos meses o años se necesita esa información por alguna causa, siga alli yo ya logre eso con las fechas lo que no he podido hacer es traerme los datos del mes anterior siempre tengo que hacer uno por uno y la idea es agilizar, me los traigo todos, edito la información salarial y ya tengo la nueva planilla de pago de agosto sin afectar junio ni julio

Yorman: Al responderte he visto las respuestas de ICUE y poco, por no decir nada puedo añadir, porque la metodología que te recomienda aparte de ser correcta es muy simple de implementar.

Un saludo a los dos ICUE y Yorman >> Jacinto

Respuesta
1

No tengo ni idea de como tienes la tabla, por tanto voy a suponer que, más o menos, es algo así

En el formulario, en el combinado elijo un mes, en este caso el mes 07/2018

Y me queda como en la imagen siguiente. Si pulso el botón me aparece el inputbox para que le ponga el nuevo mes(pero con esos mismos días)

Al pulsar Aceptar, la tabla te queda

Donde puedes ver que te ha añadido los registros de Julio pero con el mes de Octubre.

El código tanto del combinado como del botón es

Pero como te decía, todo esto es sin saber como tienes construida la tabla, ya que otra forma sería "recorriendo" los registros e insertando en la tabla los registros actualizados uno a uno.

Buen día Icue González gracias por tu respuesta y creo que diste en el clavo de lo que se quiere ahora al darle al inputbox el crea un nuevo registro como dices del mes anterior pero con fecha del mes siguiente de todos los registros que en este caso son 19 registros todos los meses si es así eso es lo que en realidad se quiere

Osea la idea es que yo edite el mes que estoy colocando sin dañar el mes anterior si agarro julio lo edito como agosto pero sin dañar julio porque solo quiero los datos por si al empleado le asignaron ese mes un bono o le aumentaron el sueldo etc por eso creo que esta bien lo que colocas porque me imagino que al darle a la fecha desde el cuadro combinado me trae toda la información o como haría para traerme toda la información del mes anterior para editarla con el nuevo mes como te dije sin dañar el mes anterior si quieres te explico como esta estructurada la BD o te la pasaría si es lo mas rápido

Da exactamente igual lo que haya en el formulario, es decir, los datos del mes de julio. Lo que ya está guardado en la tabla guardado estás. Si tengo la tabla Clientes

Verás que hay 91 registros cada uno con su país. En el formulario pongo algo parecido a lo indicado antes

Elijo Francia y me "saldrán" 11 registros que tienen como país Francia y si pulso el botón

En cuanto Acepto, la tabla me queda

Como puedes ver, ahora hay 102 registros, 91 que había al principio más 11 nuevos y con el país de Mongolia. Con unas flecha te he señalado que los registros 84 y 85 no se han visto modificados.

Ahhh ok perfecto es lo que busco y ya coloque el código pero me da errores no se porque, tengo que revisarlo mejor, ahora que llegue a la ofic lo reviso con calma, la tabla se llama empleados y el formulario se llama Frm_Empleados ahhh y la consulta Cons_Empleados, no interfiere los campos que tenga verdad solo con ver la fecha se trae los datos?

Buenas tardes amigo, el código no me muestra las fechas ni el mes ni el año para poder buscar los registros

y ahora me sale este error al seleccionar el botón

Icue te informo lo que e hecho hasta ahora fíjate si funciona pero a la mitad osea no me trae todos los registros solo el que coloque aquí DoCmd.RunSQL "insert into empleados select Apellidos from empleados where format([Fecha],""mm/yyyy"") = '" & Me.cmd_BuscarF & "'" primero me da este error cuando le doy al boton

y luego cuando detengo la ejecución  y ejecuto de nuevo el botón solo me trae estos datos

pero no completos y la idea es que traiga codo de nuevo para ver lo que se va a modificar

Amigo ya logre que me trajera toros los datos aquí DoCmd.RunSQL "insert into empleados select Apellidos from empleados where format([Fecha],""mm/yyyy"") = '" & Me.cmd_BuscarF & "'" donde esta apellidos lo cambie por * pero cuando presiono el botón es cuando me da el error que menciono mas arriba en la imagen es lo único ya que faltaría para que funcione completamente pero así es que se quiere que se traiga la data para editarla.

Vamos a ver, en un combinado, una cosa es lo que se muestra y otra cosa es lo que importa. Esto último es la columna dependiente, y lo que se muestra depende de Formato-Número de columnas y de Formato-Ancho de las columnas. En ese caso particular, en que tengas una tabla como al principio

Basta con poner en las propiedades del combinado, en origen de la fila

SELECT Format([fecha],"mm/yyyy") AS MesAño FROM Empleados GROUP BY Format([fecha],"mm/yyyy"), Month([fecha]) ORDER BY Month([fecha]);

En las propiedades del combinado en Datos-Origen de la fila se pulsa el botón de generar(marcado con una flecha)

Y se lleva a la cuadrícula de diseño la tabla Empleados y se pone como en la imagen. Al cerrar te queda el origen de la fila como te lo puse arriba

El campo Mes([fecha]) no sirve nada más para que ordene los meses ascendentes.

ok pruebo y te aviso gracias

Hola buen día Icue ahora si me muestra la fecha pero cuando la selecciono me sale este error

¿Has comprobado en las propiedades del combinado, en la solapa Otras si realmente se llama CboBuscar?

Si yo mismo se lo cambie así desde allí es más cuando lo busco por Me. Automáticamente me sale cboBuscar que raro de verdad, sera que falta algo

Que va probé cambiándole el nombre a cbo_Buscar y da el mismo error que raro y al código del botón a la instrucción SQL le coloque lo mismo y nada, te paso el código a ver si soy yo que estoy haciendo algo mal

Código del cuadro combinado

Me.RecordSourse = "select * from empleados where format ([fecha],""mm/yyyy"") = '" & Me.cbo_Buscar & "'"

Hola Icue, al fin ya reescribí el código y ya no me da ningún error gracias a dios pero me copia solo la columna que seleccione por ejemplo

DoCmd.RunSQL "insert into empleados select * from empleados where format ([Fecha],""mm/yyyy"") = '" & Me.cboBuscar & "'"

pero si le coloco 

DoCmd.RunSQL "insert into empleados select Apellido from empleados where format ([Fecha],""mm/yyyy"") = '" & Me.cboBuscar & "'"

o nombre u otra columna me trae eso y la fecha pero mas nada, como puedo traerme toda la data son 34 columnas en total incluyendo fecha pero cuando le coloco apellido me trae fecha y apellido o le coloco nombre entonces solo me trae fecha y nombre y la idea es traer las 34 columnas para poder modificar cualquier empleado que haya cambiado

Amigo tranquilo ya no hay problema ahora si hace todo ya me copia todas las columnas, revise el código detalladamente y todo perfecto muchas gracias Icue saludos

Vamos a hacer una cosa, mándame sólo el formulario, la base entera nó, a [email protected] y lo miro. Si lo haces, en el asunto del mensaje pon tu alias Yorman ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas