Añadir registros de marcaciones

Tengo un problemilla en una BD sobre marcaciones de asistencias de docentes en una institución. He visto un ejemplo suyo bastante interesante http://www.mediafire.com/download/byeix34i4ye2t6d/PruebaReloj.zip, mis campos son bastante parecido, asi que para que usted entienda mas rapido le explico sobre este ejemplo.

Si nos fijamos el funcionario 101 el dia 28/07 tiene marcaciones de entradas y salidas, lo mismo el dia 29/07, y luego ya el dia 04/08 de entrada. Lo que querria saber es si hay una manera de cargar los dias en que LOS FUNCIONARIOS no tuvieron marcaciones (los dias 30/07, 31/07, 01/08, 02/08, 03/08 para el funcionario 101 en este caso, pero lo ideal tiene que rellenar de todos los funcionarios) y que me aparezca "AUSENTE" en el campo accion donde aparece si es E (entrada) o S (salida).

2 Respuestas

Respuesta
1

Creo que te equivocaste de experto, pues la BD de ejemplo no la hice yo, sino que fue neckkito. De todas formas, te he programado una posible solución a tu problema, en el evento "Al cargar" del formulario "FFichajes".

De esta forma, cada vez que lo abras para registrar una entrada o salida, se te rellenan las ausencias posibles. El código lo programé para que se rellenen hasta el día anterior a la fecha, lo que implica que no se pueden añadir entradas ni salidas de días pasados.

Si prefieres hacerlo por medio de un botón, sólo tienes que colocar uno en alguno de tus formularios y hacer un copia-pega del código.

Aquí te dejo el ejemplo.

Respuesta
1

He echado un vistazo al código que propones y te quería comentar una cosilla, a ver qué opinas:

El código que hice yo está asignado a un botón (el de FControl), y tú asignas el código al evento "Al cargar" del formulario (FFichajes).
Eso hace que cada vez que se abra el formulario se ejecute tu código, lógicamente. Si los fichajes se llevan escrupulosamente al día quizá eso sea "machacar" innecesariamente los recursos del ordenador.

Ojo! No digo que esté mal. De hecho te lo comento para ver qué opinas tú.

Quizá la mejor solución que se me ocurre para optimizar tanto tu código como el mío es la siguiente:

1.- Crearse un módulo con un procedimiento con tu código

2.- Añadir a ese módulo otro procedimiento con mi código

3.- Utilizar un botón de comando único para lanzar el proceso, de manera que su código sea algo así como:

...

Private Sub...

Call procedimientoSvein()

Call procedimientoNck()

...

De esta manera se podrían "reciclar" tus variables y las mías (quizá utilizándolas como variables privadas a nivel de módulo), reutilizándolas en ambos códigos, lo que los simplificaría, y todo funcionaría con un "sólo clic": tú me rellenas los huecos y yo te pongo las horas trabajadas ;)

¿Qué te parece? ¿Se te ocurre alguna solución mejor, o cómo mejorar la solución que te propongo?

Dos mentes piensan mejor que una (en ocasiones, claro... ji, ji...)

Ya me dirás.

Un abrazo,

Neckkito

bonito nombre... ;)

Ahí tienes la mezcla de códigos que hemos comentado Sveinbjorn y yo. Un par de comentarios:

- El código del evento "Al cargar" de FFichajes ha desaparecido

- El código del evento "Al hacer clic" del botón de FControl se ha modificado. Hay una línea extra de código que está comentada que se puede borrar. La he dejado ahí por "velocidad" para comprobar los resultados.

- Las dos consultas que hay son necesarias. De hecho, la segunda consulta te la he ampliado con algunos campos y relaciones porque sirve bastante bien para ver los resultados

- Tendrás que crearte un módulo estándar y en él escribir (o copiar) todos los códigos que hay en el módulo del ejemplo. No olvides que también debes copiar TODO: desde las declaraciones de variables hasta el último End Sub.

- Finalmente ten en cuenta lo que ya comentaba en el pdf del ejemplo original: si hay una entrada DEBE haber una salida. Si no es así la asignación de horas no es correcta. En el ejemplo faltaba una salida para el trabajador 101, que he añadido yo. Insisto: si no hay un doble movimiento (E-S) no obtendrás los resultados que deseas.

El ejemplo es: https://www.mediafire.com/?7xxt5tfv2m9sf5l 

Hola disculpe las molestias nuevamente.

neckkito he estado mirando el ejemplo actualizado que me han enviado junto a Sveinbjorn y desde ya muchas gracias por la ayuda. Probando el código y su funcionamiento me he percatado que cada vez que ejecuto me va duplicando los registros cuyo valor del campo "Accion" sea igual a "Ausente". ¿Cómo podría solucionarlo?

Muchas gracias

PD: anguya quiere decir raton (mouse) en el idioma guarani  y py mi zona, ya sabras de donde soy :). Un abrazo

Hola disculpe las molestias nuevamente.

neckkito he estado mirando el ejemplo actualizado que me han enviado junto a Sveinbjorn Tolainnen y desde ya muchas gracias por la ayuda. Probando el código y su funcionamiento me he percatado que cada vez que ejecuto me va duplicando los registros cuyo valor del campo "Accion" sea igual a "Ausente". ¿Cómo podría solucionarlo?

Muchas gracias

PD: anguya quiere decir raton (mouse) en el idioma guarani  y py mi zona, ya sabras de donde soy :). Un abrazo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas