FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Cita:
Mil Gracias. |
#2
|
||||
|
||||
Yo tengo una idea muy simple.
Usaremos un array, para que se entienda :
Claro, esto no puede implementarse así de fácil, pero esa es la idea. El punto fuerte está claro, no tendrás problemas para saber los días que ha trabajado, recorres todo el array y si tiene un true lo computas, si tiene un false no lo computas. Añadir el periodo de fechas trabajado es muy simple... un bucle entre las dos fechas poniendo a true el día trabajado. La desventaja es clara, si vamos a computar la vida laboral de un trabajador, serían 35 años por 365 días.... un array de 12.775 posiciones....tampoco sería muy excesivo, ya que un array son punteros y lo que guarda es un boolean. No debería tardar mucho. ¿Como se implementa? Vamos a usar un array dinámico
Como ves es un pseudocódigo, pero creo que puede servir. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 27-02-2007 a las 12:27:18. |
#3
|
||||
|
||||
Otra cosita:
Yo todo eso lo encapsularía dentro de un TObject (una clase). De tal forma que al añadir un periodo de fechas, a la misma vez que pongo a true el índice del array incrementaría la cuenta de una variable privada "diasTrabajados", de esta forma no tendremos que recorrer todo el array para saber lo dias totales, es decir:
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 27-02-2007 a las 12:27:30. |
#4
|
|||
|
|||
Cita:
Gracias. |
#5
|
||||
|
||||
A ver... hoy estoy algo resacoso donde dice:
debe decir:
Si trabajados tiene el valor 12 e índice tiene 7, el bucle que tiene el fallo solo constaría de 12-7 = 5 iteraciones, cuando en realidad, debe hacer 12 iteraciones. Revisa concienzudamente el código, ya digo... la fresca rubia de anoche me dejó secuelas Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
||||
|
||||
Es muy facil. Es dificil de creer que la solución que te voy a dar es la más simple y eficiente. Puedes comprobarla, y analiza el algoritmo que te explico, y verás que es correcto.
Yo lo utilizo en mi sistema de gestión de reservas de hoteles. 1. Obtienes todos los registros de fechas de trabajo de un profesor de terminado, ordenados por fechas de inicio. (Muy importante esto último.) 2. Realizas un loop 'Do while not eof' de esos registros obtenidos, habiendo creado previamente dos variables tipo fecha, p.ej. FechaMin y FechaMax. 3. Reemplazas FechaMin y FechaMax con los respectivos valores del 1er registro. 4. Realizamos el 'Do while not eof'
Presta especial atención a lo expuesto : Tienes que comparar Fecha Inicio nuevo registro con FechaMax (<=), y Fecha Final nuevo registro con FechaMin (>=). 5. Si la condición anterior NO se cumple estamos ante un nuevo periodo de fechas que NO se solapa con ningún otro, por lo que sumamos el número de días entre FechaMin y FechaMax a una variable TotalComputo o algo parecido. 6. Procedemos de nuevo por el punto 3 con el último registro y las nuevas FechasMin y FechaMax con los respectivos valores de FechaInicio y FechaFinal 7. Al final de recorrer todos los registros, obtendrás el total de días trabajados en la variable TotalComputo. ... envío este hilo y ahora intentaré añadir otro con un código más concreto como ejemplo.
__________________
Piensa siempre en positivo ! |
#7
|
||||
|
||||
Intentaré hacerlo con un código 'genérico' para que sea más comprensible.
Ya lo adaptas a la base de datos que utilices.
Pruébalo. Espero sorprenderte con el resultado. Un saludo.
__________________
Piensa siempre en positivo ! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Fechas en sql | carymar | SQL | 2 | 15-06-2006 18:35:10 |
Las horribles fechas, control de fechas | Huer | OOP | 6 | 18-10-2005 19:11:49 |
Fechas | jmlifi | Varios | 2 | 11-04-2005 16:40:22 |
fechas | davidgaldo | Conexión con bases de datos | 4 | 02-03-2004 17:21:51 |
Fechas | Novás | Varios | 1 | 20-10-2003 13:39:57 |
|