Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Asignar fecha según el día elegido!!

Buenas tardes foro!!

Tengo un checkbox por cada día.

√Lunes √Martes √ Miércoles √Jueves √Viernes √ Sábado √Domingo

Lo que yo quiero es lo siguiente: según el día que elijo, quiero asignarle la fecha que coincida con tal día..
Ejemplo:
Si selecciono el día MARTES, necesito según la fecha actual, asignarle la fecha inmediatamente posterior a la actual, pero que coincida con un MARTES. Si hoy es 17/10/2011 (lunes), yo necesito que a MARTES se le asigne la fecha 18/10/2011, que es el MARTES que sigue.
Y así con los días que hayan sido elegidos.

Pero quiero saber si existe alguna función para que lo haga automáticamente en un botón, ya que yo no tengo que seleccionar la fecha de ningún componente, no utilizo con componentes TDateTimePicker ni TMonthCalendar, solamente al dar aceptar, que asigne las fechas.

Se que existe una función de la unit DateUtils que a partir de una fecha se puede saber que dia de la semana es, pero yo necesito una función que haga totalmente lo contrario..
Trabajo con delphi 7 y ya tengo instalada la unit DateUtils, ya que en delphi 7 no viene instalada por defecto.

Espero me puedan ayudar y haber sido clara, cualquier duda vuelvo a explicar.
Desde ya muchas gracias..
Responder Con Cita
  #2  
Antiguo 18-10-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
No entiendo de para atrás ni para adelante lo que quieres.

Tomá más tiempo para redactar lo que quieres expresar. No te apures que el apuro no deja nada.

Saludos
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 18-10-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Te pongo un ejemplo:

Tengo que cargar horarios que trabaja un profesional y los dias.
Con los checkbox selecciono los dias que trabaja tal profesional. Como ejemplo seleccionamos solo el dia jueves y cargamos en dos dbedit los horarios que trabaja, ej: desde 08:00hs a 10:00hs..
Ahora, lo que yo necesito es que esos horarios del dia jueves se guarden con una fecha, pero esa fecha debe coincidir con el dia elegido..
No es correcto que si yo consulto el horario del profesional una fecha 17/10/2011 (lunes), me salgan los horarios del dia jueves. me explico??
Entonces yo quiero que al dia jueves se le asigne la proxima fecha que caiga jueves en el almanaque, por ejemplo el 20/10/2011, es el proximo jueves.
Eso se puede saber o hacer en delphi?? con alguna funcion?

Espero haberte aclarado el tema, yo creo que se entiende, pero claro, yo si sé que es lo que quiero, sin embargo para ustedes aveces es complicado entender lo que uno tiene en la cabeza.
Pido perdon por no saber expresarme bien, hice lo posible para que se entienda..

Muchas gracias
Responder Con Cita
  #4  
Antiguo 18-10-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Según entendí, tal vez la función IncDay de la unidad DateUtils te puede asistir en lo que necesitas.

Por ejemplo, suponiendo que hoy 17 de octubre es lunes, el próximo lunes será 24 de octubre. Esto es una diferencia de siete días exactamente. Pues con esa información y utilizando IncDay puedes determinar que fechas serán los próximos lunes del resto del año por ejemplo.

Código Delphi [-]
proximo_lunes := IncDay(Now, 7); // suponiendo que now devolverá 17/oct/2011

Saludos!
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #5  
Antiguo 18-10-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Si esa función me funcionaria barbaro para otra cosa que tambien quiero hacer, por ejemplo guardar los horarios que trabaja el profesional el dia jueves pero en todos los jueves del mes y no solamente en el jueves de una sola semana.

Lo que yo necesito ahora es, siempre teniendo en cuenta la fecha actual de la computadora, calcular que fecha cae el proximo jueves o cualquier dia que haya sido elegido.

Yo tenia pensado ver si existe la funcion que a partir de una fecha actual, se pueda calcular el primer dia de la semana y el ultimo, entonces asi seria mucho mas facil para calcular la fecha para cada dia de la semana..
Ejemplo: Pensarlo como un arreglo del [0..6] donde el Domingo (0), Lunes (1), Martes (2), Miercoles (3), Jueves (4), Viernes (5), Sabado (6).
Dada una fecha, en este caso la de la computadora, supongamos que es el 17/10/2011 , sacamos a que dia corresponde tal fecha, creo que con la funcion DayoftheWeek, el cual da el dia de la semana de una fecha dada.

Entonces quedaria de la siguiente forma: a la fecha now(actual)

Si DayoftheWeek es 0, entonces para calcular lunes, se le suma 1 a la fecha actual, para calcular martes se le suma 2, para calcular miercoles se le suma 3, para calcular jueves se le suma 4 y asi sucesivamente..

Si DayoftheWeek es 1, entonces para calcular martes se le suma 1 a la fecha actual, para calcular miercoles se le suma 2, etc..

y de esta manera se tendrian que hacer varios if, pasandolo a codigo delphi.

Me gustaria saber que opinan ustedes que saben mas, yo la verdad ya no se como pensarlo..

Chis muchas gracias por tu aporte, me sirve, me ayudo a pensar una forma mejor de codigo, pero la verdad aun no estoy convencida..
Responder Con Cita
  #6  
Antiguo 18-10-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Creo que te estás confundiendo demaciado con esto. De hecho no te entiendo lo que quieres. Por ejemplo:
Cita:
Si DayoftheWeek es 0, entonces para calcular lunes, se le suma 1 a la fecha actual, para calcular martes se le suma 2, para calcular miercoles se le suma 3, para calcular jueves se le suma 4 y asi sucesivamente..

Si DayoftheWeek es 1, entonces para calcular martes se le suma 1 a la fecha actual, para calcular miercoles se le suma 2, etc..
¿Desde cúal perspectiva calcularías los días para hacerle este incremento a DayOfWeek? Para ver el problema desde este punto de vista el código DEBERÁ ejecutarse en un día en específico y no en otro, por ningún motivo. Cosa que creo no deseas.

Tienes un problema. Para resolverlo necesitas dividirlo en partes más pequeñas. Pero tengo la impresión que andas buscando el código enterito que resolverá el problema global. No, así no se hacen las cosas. Si programas así no tardarás mucho en volverte loco. En programación se aplica la técnica de "divide y vencerás". Esto es lo mismo que te he dicho, un problema hay que dividirlo en problemas más pequeños y simples de resolver.

Empecemos por aquí antes de seguir. Vamos en partes. Haste a la idea que a mí no me interesa cada detalle de lo que debe hacer tu aplicación. Tampoco tienes por qué decirlo a menos que se te lo pida. Entonces, plantea preguntas simples. No te preocupes por la cantidad. En este club habemos muchos con afán de ayudar y no nos importa la cantidad o complicación de la pregunta. Ve los números de entradas que se han creado para que me creas.

Divide tu problema. Y trata de explicarte mejor. No quieras decir todo en un sólo párrafo. Trata una idea en un sólo párrafo y si se necesita, explicala en detalle entre distintos párrafos sin mezclar ideas que no estén relacionadas a la idea principal que quieres compartir.

Por último te recomiendo, toma lápiz y papel y trata de resolver el problema en él. Verás que no tardarás mucho en dar con esa solución que andas buscando. Si deseas puedes pedir opinión al respecto acá. Talvez alguien puede mejorla.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 18-10-2011
Avatar de cubanbaker
cubanbaker cubanbaker is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: La Habana, Cuba
Posts: 65
Poder: 0
cubanbaker cantidad desconocida en este momento
Lo que te dice Chris tiene razon, a mi me ha pasado y siguiendo lo que el dice me han podido ayudar mejor.
Divide tus problmeas y los vas preguntando uno por uno, cada parte del todo porque de verdad que yo tampoco he entendido mucho y te he leido varias veces...
Ayudaría si pones algo de código.
Responder Con Cita
  #8  
Antiguo 18-10-2011
Avatar de cubanbaker
cubanbaker cubanbaker is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: La Habana, Cuba
Posts: 65
Poder: 0
cubanbaker cantidad desconocida en este momento
Tengo varias preguntas que hacerte para entender bien lo que quieres hacer, pero solo te haré algunas:
Por qué mejor no le ofreces al usuario todas las fechas posibles, o sea, después que escoja el día de la semana que quiere darle, por ej. jueves, le muestras todos los jueves posibles para que quien dé los turnos pueda escoger qué jueves darle al paciente? Me parece que si obligas a que el programa dé los turnos automáticamente, dentro de un tiempo tu aplicación se volverá obsoleta, pues el dia de trabajo de cada profesional puede cambiar, o a lo mejor el dia que te ofrece la PC como turno, ese dia no se trabaja por ser dia en tu país festivo etc ( a mi me ha pasado eso ). Me parece q sería acertado ( en mi opinión) darle al usuario la posibilidad de escoger el dia que tu aplicación le esta ofreciendo, le visualizas varios jueves y que el decida cual jueves darle el turno y no ser tan rígida en dar una fecha obligada. Puedes empezar mostrandole cual fecha es el proximo jueves y asi sucesivamente le muestras los sigueintes tantos jueves como quieras y que el escoja. Así sería menos complicado y tendrías un programa mas flexible para el usuario, porque de ser tan rígida estas obviando los problemas que la vida le puede imponer a ese profesional. Trae a tu programa cómo es que actualmente se hace de forma "manual" la asignación de turnos hoy en dia, y ahí está la logica de tu programación y se hace menos complicada y mas flexible. Olvídate del código y funciones, primero estudia cómo lo hacen y ten en cuenta todos los posibles factores que puedan influir en la asignación automática y obligada del turno y a partir de ahi, entonces la programación.
Así de esa forma, los maestros de este foro (que hay muchos y muy ingeniosos) te podran ayudar.
Quizás esto no sea lo que quieras hacer, pero al menos hago el intento de ayudarte y me has motivado. Tengo mas preguntas que hacerte pero no quiero ser pedante.
Un saludo
Responder Con Cita
  #9  
Antiguo 18-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No he contestado porque tampoco acabo de entender claramente lo que se plantea resolver.
No entiendo eso de si hoy es lunes y se quiere marcar el jueves hay que sumarle x días. Si quieres marcar el jueves, marcas el jueves, no hay que sumar nada. Bueno, ya digo, es que no entiendo bien lo que se quiere hacer.
Responder Con Cita
  #10  
Antiguo 18-10-2011
Avatar de cubanbaker
cubanbaker cubanbaker is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: La Habana, Cuba
Posts: 65
Poder: 0
cubanbaker cantidad desconocida en este momento
Casi Miro
Creo saber lo que quiere, hice un programita para ver si eso es lo que ella quiere, pero tiene 330 KB y aqui no me permite subir .rar mayores de 293 KB.
Qué puedo hacer para que ella vea el programa y me dice si es eso lo que quiere y ustedes también puedan verlo y entender que es lo que desea... (Ojala sea eso)
El código fuente es muy extenso para ponerlo aqui...
Responder Con Cita
  #11  
Antiguo 18-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, te he contestado el mensaje privado, seguramente has dejado el ejecutable, quítalo y deja sólo el código fuente del proyecto.
Responder Con Cita
  #12  
Antiguo 18-10-2011
Avatar de cubanbaker
cubanbaker cubanbaker is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: La Habana, Cuba
Posts: 65
Poder: 0
cubanbaker cantidad desconocida en este momento
Creo que esto es lo que ella quiere... Y así entendemos. Ojala y ese sea el problema que ella quiere resolver.
Responder Con Cita
  #13  
Antiguo 18-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero amigo, no envies un ejecutable, eso no sirve para nada
Manda el código fuente.
Aquí compartimos código, para aprender, pero un ejecutable no sirve.
Entiendo que quieres ayudar, pero así no ayudas, debes enviar sólo el código fuente del proyecto, ya cada uno lo compilará.
El prj los pas y los dfm

He borrado el ejecutable que has subido, además por cuestiones de seguridad.

Última edición por Casimiro Notevi fecha: 18-10-2011 a las 12:34:53.
Responder Con Cita
  #14  
Antiguo 18-10-2011
Avatar de cubanbaker
cubanbaker cubanbaker is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: La Habana, Cuba
Posts: 65
Poder: 0
cubanbaker cantidad desconocida en este momento
Wink

Me da verguenza ante tanta gente de este foro que sabe Delphi de verdad poner un codigo, pero traté de ayudar y así aprender yo también. Es una programación burda y una solución simplista, pero así pude hacerlo. Sé que tiene una forma de hacerla mejor y mas pequeña, por eso me gustaría cualquier arreglo y explicación de cómo hacerlo mejor.
Aquí les va...
Gracias
Archivos Adjuntos
Tipo de Archivo: rar AsignarTurnos.rar (1,7 KB, 43 visitas)
Responder Con Cita
  #15  
Antiguo 18-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues yo no veo ninguna vergüenza, he visto el código y, como todo código, siempre es posible mejorarlo, pero si hace lo que tiene que hacer, entonces es perfecto.
Gracis por compartirlo
Responder Con Cita
  #16  
Antiguo 18-10-2011
Avatar de cubanbaker
cubanbaker cubanbaker is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: La Habana, Cuba
Posts: 65
Poder: 0
cubanbaker cantidad desconocida en este momento
Ahora solo falta que ella aparezca y diga si es eso lo que quiere hacer, así habrá valido la pena estar despìerto... jaja
Me gustaría me dijeras que arreglos le puedo hacer y cómo hacer menos lineas de código.
Me costó trabajo entender lo que quería (digo, si es eso)
Saludos
Responder Con Cita
  #17  
Antiguo 18-10-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Cita:
Empezado por cubanbaker Ver Mensaje
Tengo varias preguntas que hacerte para entender bien lo que quieres hacer, pero solo te haré algunas:
Por qué mejor no le ofreces al usuario todas las fechas posibles, o sea, después que escoja el día de la semana que quiere darle, por ej. jueves, le muestras todos los jueves posibles para que quien dé los turnos pueda escoger qué jueves darle al paciente? Me parece que si obligas a que el programa dé los turnos automáticamente, dentro de un tiempo tu aplicación se volverá obsoleta, pues el dia de trabajo de cada profesional puede cambiar, o a lo mejor el dia que te ofrece la PC como turno, ese dia no se trabaja por ser dia en tu país festivo etc ( a mi me ha pasado eso ). Me parece q sería acertado ( en mi opinión) darle al usuario la posibilidad de escoger el dia que tu aplicación le esta ofreciendo, le visualizas varios jueves y que el decida cual jueves darle el turno y no ser tan rígida en dar una fecha obligada. Puedes empezar mostrandole cual fecha es el proximo jueves y asi sucesivamente le muestras los sigueintes tantos jueves como quieras y que el escoja. Así sería menos complicado y tendrías un programa mas flexible para el usuario, porque de ser tan rígida estas obviando los problemas que la vida le puede imponer a ese profesional. Trae a tu programa cómo es que actualmente se hace de forma "manual" la asignación de turnos hoy en dia, y ahí está la logica de tu programación y se hace menos complicada y mas flexible. Olvídate del código y funciones, primero estudia cómo lo hacen y ten en cuenta todos los posibles factores que puedan influir en la asignación automática y obligada del turno y a partir de ahi, entonces la programación.
Así de esa forma, los maestros de este foro (que hay muchos y muy ingeniosos) te podran ayudar.
Quizás esto no sea lo que quieras hacer, pero al menos hago el intento de ayudarte y me has motivado. Tengo mas preguntas que hacerte pero no quiero ser pedante.
Un saludo


Eso es lo que necesito.. yo tengo tres opciones para generar los turnos, por semana, por mes, por trimestre.. para que el que maneje el sistema seleccione el modo que desea generar los turnos.

Yo no quiero que si o si se le asigne a tal horario o turno, la fecha del proximo jueves solamente, sino que a partir de una fecha jueves poder calcular todos los demas jueves. Entonces al realizar la consulta, si el usuario quiere tal jueves (el que desea), se busca y ahi apareceran los horarios de los turnos para que elija.

Pero para calcular las fechas de los proximos jueves, necesito saber que fecha va a caer el jueves de esta semana asi se comienza a calcular...
Siempre suponiendo que hoy voy a dar de alta y que justo se selecciono el dia jueves, como dia laboral del profesional. todo esto es un ejemplo. puede ser cualquier otro dia.

Cubanbaker disculpa que aun no eh podido observar el codigo, lo que sucede es que yo estoy trabajando desde muy temprano y no tengo el programa para verlo desde aqui, tenddre que esperar hasta el mediodia para usar mi computadora personal. Pero la idea que has redactado muy bien es precisamente la que quiero realizar, para que sea mas accesible al usuario elegir el dia que quiere un turno.
Responder Con Cita
  #18  
Antiguo 18-10-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Cubanbaker muchas gracias por el codigo, es muy parecido a lo que quiero hacer.. Lo voy a probar adaptandolo a mi proyecto y les comento...
Espero solucionar lo que necesito.

Muchas gracias por tratar de entender lo que queria hacer.
Saludos
Responder Con Cita
  #19  
Antiguo 18-10-2011
Avatar de cubanbaker
cubanbaker cubanbaker is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: La Habana, Cuba
Posts: 65
Poder: 0
cubanbaker cantidad desconocida en este momento
Espero que me comentes, me gustaría saber si te ha servido... y qué mejoras le haces. Ese código es solo una parte de tu problema. No te creas, me costó entenderte!
Hazme saber, me gustaría poder seguir ayudandote en este proyecto q
Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener nombre de carpetas segun la fecha Ledian_Fdez Varios 2 23-03-2009 23:04:31
fecha segun idioma del servidor karocs .NET 2 27-08-2007 23:21:15
Busqueda segun el mes de una fecha(no la fecha completa) federiconqn21 Firebird e Interbase 1 05-05-2006 15:39:53
Busqueda segun seleccion y asigancion de fecha a un DBEdit. JoanKa Varios 1 12-06-2005 21:29:28
Asignar un campo tipo fecha... Rubiel SQL 4 14-06-2003 11:03:19


La franja horaria es GMT +2. Ahora son las 03:33:59.


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
Copyright 1996-2007 Club Delphi