Obtener fechas especificas
Saludos colegas,
Trabajo en un sistema de Recursos Humanos y Nominas y se me ha pedido crear automaticamente los periodos de pagos los culaes pueden ser mensuales, quincenales o Semanales por tanto necesito crear una funcion que pasandole la fecha o solo el año, me retorne las quincenas de todos los meses del año, las semanas y logico el mes. Para de esta manera insertar la informacion en una tabla. Ej: Año :=2006 Quncenas :=True; Enero 01/01/2006 al 15/01/2006 y 16/01/2006 al 31/012006 Febrero 01/02/2006 al 15/02/2006 y 16/01/2006 al 28/02/2006 lo mismo seria para las semanas.. Cualquier sugerencia, recomendacion o codigo sera bien recibido Les estare sumamente agradecido por su colaboracion Gracias de antemano Delphi 5.0 Windows XP |
Hola OscarRd
Esto lo haria yo con una sentencia sql en un query y con dos dateTimePicker asi: Coloco dos dateTimePicker en el form y pongo esto, puede ser en un boton: Saludos |
Mmm no lo que necesita es crear los correspondientes registros de Pagos donde estan sus vencimientos, ya sea semanal..mensual o anual no es asi??
Si usas las ultimas versiones de delphi como el 2005 las rutinas date time tienen muchas funciones que te pueden ayudar. Tengo a mano aca delphi4 y no veo mucha ayuda jeje. Tenes IncMonth que te adiciona a tu fecha la cantidad de meses que le indiques..los format date ..los decode etc. Podrias tener procedimientos distintos ya sea para mes ..semana o quincena, para tener el codigo bien prolijo y obtener las fechas correspondientes e ir creando los registros en la base. Tambien podes convertir las fechas desde el motor..con las funciones que trae y ponerlas desde la misma sentencia insert..(aunque seria medio imposible en algunos casos ja). por ejemplo para quincena sabes que comienza en dia 1 y termina en el ultimo dia del mes: 01/06/2006 al 15/06/2006 16/06/2006 al //ultimo dia del mes// ultimo dia del mes: primerDia:=01/06/2006; primerDiaMesSig:= incMonth(primerDia,1): cantDiaMes:=round(primerDiaMesSig - primerDia); ultimodiaMes:=cantDiaMes/06/2006; claro que esto no funciona si lo pones asi nomas :D , en ultimoDiaMes deberias armar la fecha con encodeDate. Espero te sirva..y si tengo tiempo te armo algo si no lo resolviste. salu2222 |
Gracias por tu pronta respuesta
lo que requiero es dividir los 12 meses del año en quincenas mes 2: primera quincena del 1 al 15 mes 2: segunda quincena del 16 al 31 ya probe lo que dijiste pero no me funciona |
Lo que puse es una idea..asi tal cual lo escribi no funciona...
Si podes pega el codigo de lo qu hiciste y lo miro, ya me estoy yendo pero mañana o mas tarde lo miro! salu22 |
Gracias Reina, Agradeceria mucho
que me armaras el codigo lo mas que puedas ya que soy Nuevo en Delphi. Gracias de antemano |
Hola
La verdad no entiendo bien lo que quieres entonces, porque en mi empresa se cancela la nomina tanto por semana como quincena o incluso mes y puedo ver exactamente lo que se cancelo en la semana X o quincena X del mes X. Sin nungun problema, entonces no entiendo.!=?? Bueno lamento no haber podido ayudarte. Saludos |
Gracias Caral....si que me ayudaste
En otras palabras lo que quiero es tener una tabla con la siguiente estructura Periodo mes fecha1 fecha2 001 Enero 01/01/2006 15/01/2006 002 Enero 16/01/2006 31/02/206 003 Febrero 01/02/2006 01/15/06 004 Febrero 16/02/2006 28/02/2006 Esto es en el caso de los pagos quincenales |
Hola
La verdad sigo sin entender.:confused: La nomina quincenal se paga solo las quincenas La nomina Semanal se paga solo las semanas Entonces donde esta el problema, si le indico a mi programa que me de las nominas me las dara en su fecha exacta. Ahora si quieres que el programa defina que ha sido pagado por semana o por quincena o por mes, es tan facil como poner un campo en la tabla que lo defina, S, Q, M. En la consulta pones un edit en el que se verifica que cumpla la condicion osea que el campo FechaDePago que as de incluir en la tabla, sea S, o Q, o M. La verdad siempre con el mismo sistema que te indique, lo veo realmente simple, creo que buscar las nominas exactas como las planteas te va a dar problemas ya que en algunas ocasiones la fecha de pago se puede variar si hay dias feriados u otros, esto es normal en las empresas, para mi te estas complicado la vida, sinceramente el codigo que necesitas es simple. Saludos |
Saludos
No he leido todo el hilo, pero creo que el incoveniente es por las quicenas. Los meses son irregulares, es decir, terminan tanto en dias 30 como en 31, hasta en 28 y 29 en el caso de febrero. Conseguir la primera quicena es facil pues todo mes tiene dia 15's, pero ¿como conseguimos el ultimo dia de cada mes?, Hmm facil, yendonos al dia 1 de cada mes y restarle un dia. Voila :D (Se escribira asi?:rolleyes: ) Creo que desarrollar un procedimiento o funcion no se te seria dificil, verdad?, sino aqui estamos. Suerte. |
He hecho esto, aunque no lo he probado, estoy seguro que te ayudará.
Con respecto de las semanas, hará falta saber cómo se delimitan las semanas para hacer algo que te sirva, pero con lo que te he dado, seguro lo sacas en un abrir y cerrar de ojos.
Hasta luego. |
Gracias, pero te recuerdo que uso Delphi 5
hay funciones dentro de tu codigo que no estan en esta version. |
Agradeceria mucho tu colaboracion...
pido disculpa por mi desconocimiento en esta valioasa herramienta pero como dije al principio soy nuevo en Delphi Cita:
|
Olvidé mencionar que debes incluir la función DateUtils en la clausula Uses de tu unidad. Francamente desconozco si dicha unidad está disponible en delphi 5.
Saludos. |
Hola! tarde..recien copie el codigo del compañero..y le reforme unas cosas por sino tenes esas funciones en delphi5..en mi triste delphi 4 no estan :p .
Bueno fijate si te sirve...esta hecho medio asi nomas, de todas formas me parece que si sos nuevo en delphi deberias usar el help..la ayuda no muerde y esta para ayudar! la palabra misma lo dice. Si pones date..datetime o algo relacionado con lo que queres buscar te sale lo que buscas. Tambien podrias mirar el libro La Cara Oculta de Delphi 4, es el mejor para mi gusto para aprender delphi. salu22 y exitos |
Gracias a todos, por su valiosa colaboracion
con sus consejos y recomendaciones pude lograr mi objetivo. A continuacion esta el codigo: Una ves mas Gracias a todos.... :D
|
Hola.
Me tomé la libertad de editar tu mensaje para añadir la etiqueta [delphi]. ¡La diferencia en la presentación del código es notable!. Para aprender su uso, podes editar tu mensaje o bien seguir en mi firma el vínculo a la etiqueta [code], cuyo uso es idéntico. Hasta luego. :) |
Un consejo Oscar, elimina el try except ... end si no tienes nada puesto entre el Except y el end. Si ocurriese un error, jamás podrías detectar que se produce en ese try except.
Saludos |
La franja horaria es GMT +2. Ahora son las 08:15:25. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi