Control de días permisos

Hace unos días estuve preguntándote para si se podía que al controlar los días de vacaciones o asunto propios no me dejará pedir mas de una cantidad, ya me distes una solución y me mandaste una base de datos arreglada, pero no se si te acordarás que luego te pregunte por los días de vacaciones que no me contarán los sábados, domingo y festivos, a lo que me dijiste que mirara un ejemplo de Neckkito, que me vino muy bien, pero como tuve que cambiar en lo tuyo algunos nombres, ahora me da un error en

Set rst = CurrentDb.OpenRecordset(miSQL, dbOpenDynaset).

Te mando la base de datos por si me quieres echar un ojo. Ten en cuenta que en el botón contar días puse lo de Neckkito. Tu me mandaste un procedimiento en Fecha Final

http://www.filebig.net/files/jk5KEXVrdu

1 respuesta

Respuesta
1

http://filebig.net/files/ZcYcu8w6fq

Te hice un pequeño cambio en la consulta ConsPermisos: ahora en vez del campo calculado Año, te puse el campo Ejercicio.

Además, te cambie la estructura de la SQL, que era la que daba problemas (la antigua la deje como comentario).

Además, en el procedimiento Después de actualizar de Fecha final, le cambiée la última linea (que hacia un recuento de días, pero ahora de manera errónea, al cambiar tu el código), para que simule el efecto de hacer click en el botón Calcular días.

Si no quieres que después de meter la fecha final se te rellene el cuadro de días, se la borras, con lo que tendrás que usar el botón para calcularlos.

Si quieres que se te calculen sin darle al botón, lo puedes dejar así, o, si quieres quitar el botón, dentro del modulo del formulario, creas, al final del todo, por ejemplo, un nuevo procedimiento:

Private Sub CalculaDias()

y le pegas todo el código que tienes en el botón, terminando con un End Sub. Para acabar, en el evento de Fecha Final, cambias "Call cmdNoSabNiDomNiFest_Click" por "Call CalculaDias"

No me salta ningún mensaje de que ya no tiene día disponibles

Lo reviso y te digo algo.

<a>http://filebig.net/files/XGqZNnAcaB</a>

Ya está solucionado. Había un problemilla en el Select Case, que ayer no me fije en él (en el ejemplo que te mande yo, el campo Tipo_Permiso era de Texto, pero ahora es numérico, con lo que se saltaba todas las comprobaciones)

Además, encontré otro fallito en la SQL que provocaba que no se cogiera el total de días disfrutados, sino el último numero de días disfrutados, con lo que tp funcionaba correctamente.

Ahora ya debería estar 100% operativa.

Mira prueba en el registro tres por ejemplo y le pones del 1/04/13 hasta el 30/04/12 que son 22 días vacaciones, pues no me deja. Y en el registro uno pongo 1/04/13 al 1/04/12, 1 días de asuntos propios, bien, ahora en el registro dos pongo por ejemplo del 2/04/13 al 4/04/13

bien, dos días, pero si quiero corregir por que me haya equivocado, ya me sale mal. Prueba.

<a>http://filebig.net/files/fTVB8HPPYF</a>

Revisé todo el procedimiento y lo rehíce, añadiendo una nueva función que realiza el calculo de los días y descuenta los festivos, sábados y domingos.

A ver si de esta ya va definitivamente, je je.

Cuando intento modificar un registro después de introducir los datos ya no me deja bien, pero si borro los datos, paso al siguiente registro y vuelvo a anterior ya me deja. Creo que lo vamos a dejar así, no quiero darte mas el follón.

Vaya!

Me olvidé de mirarte lo de modificar los registros...

Por la tarde lo miro, a ver si se me ocurre algo, pero esto ya es algo más peliagudo... XD

Vale

A ver si ahora ya satisface todas tus expectativas... XD

http://filebig.net/files/V6WfZmKN7J

Te explico un poco los cambios:

1º/ Una nueva SQL que sustituye a la anterior: esta nueva SQl trabaja directamente sobre la tabla permisos, seleccionando los permisos del mismo tipo que el que quieres añadir/modificar que solicito el trabajador en el ejercicio, y además, solicitados con anterioridad a la fecha de inicio del registro actual.

2º/ Ahora el numero de días disfrutados no es el valor del la antigua consulta de totales, sino que se calcula recorriendo los registros y sumando, por medio de estas lineas:

numDisfrutado = 0
Do Until rst.EOF
numDisfrutado = numDisfrutado + Nz(rst("Dias Permisos"),0)

rst.MoveNext
Loop

3º/ Añadí, en el txtFIni, este código en el evento despues de actualizar, por si la fecha que tienes que corregir es la inicial:

If Not IsNull(Me.txtFIni) And Not IsNull(Me.txtFFin) Then Call txtFFin_AfterUpdate

4º/ Para que no te borre los cuadros de fechas (en caso de que estes modificando y te pases de dias) , cambie los Me.txtF..=Null por Me.Undo, para que te vuelva a poner el valor previo.

5º/ Te modifique los mensajes para hacerlos más "informativos"

Por último, comentarte que si realizas un cambio en un registro anterior al último, los siguientes no se te actualizan, en el sentido de comprobar si se pasan de dias, para eso, tendras que ir registro por registro de ese trabajador y pulsando el boton Calcular dias...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas