¿Alguna sugerencia de tipo a crear?
#1
Escrito 17 agosto 2009 - 02:49
Un Dia tiene 24 Horas
Cada DiaDeTrabajo esta dividido en 3 Turnos
Cada turno tiene 8 Horas
cada turno tiene Inicio y Final
¿Como representar esto para programacion? Es decir que puede ser ¿Clase, record, array, ....?
Alguna sugerencia?
#2
Escrito 17 agosto 2009 - 03:18
Idturno: integer; Hora_Inicio: date; Hora_Final: date;
No encuentro mucha utilidad a almacenar ni el tiempo que dura un dia porque ese es siempre de 24 horas y la duración del turno se puede obtener restando la hora_final a la hora_inicial...
De rebote eso se me ocurre... tal vez ayudaría un poco saber qué uso le darás a esta información
Saludos !
#3
Escrito 17 agosto 2009 - 03:22
type THorario = record Dia : TDate; Turnos : string; HInicio : DateTime; HFinal : DateTime; end;
Saludos.
#4
Escrito 17 agosto 2009 - 03:29
type THorario = record Usuario: Integer; Dia: Integer; {0-Dom...7-Sab} HInicio: Time; end;
Posibilitando horarios diferentes por día.
Salud OS
#5
Escrito 17 agosto 2009 - 03:31
Saludos !
#6
Escrito 17 agosto 2009 - 03:52
El uso es manejar el calculo y presentacion de informacion por horas y totalizar por turnos; algo asi:
==========================================
| HORAS | CUENTA | SUMA |
==========================================
06:00 - 07:00 | 9,999.99 | 999,999,999.99
07:00 - 08:00 | n,nnn.nn | n,nnn,nnn.nn
08:00 - 09:00 | nnn.nn | nnn,nnn.nn
hh - mm
hh - mm
===========================================
PRIMER TURNO | XX,XXX.xx | xx,xxx,xxx.xx
===========================================
hh - mm
hh - mm
===========================================
SEGUNDO TURNO | XX,XXX.xx | xx,xxx,xxx.xx
===========================================
hh - mm
hh - mm
===========================================
TERCER TURNO | XX,XXX.xx | xx,xxx,xxx.xx
===========================================
TOTAL DIA | ZZZ,ZZZ.ZZ | ZZZ,ZZZ,ZZZ,ZZ
===========================================
Y ciertamente en algunos lados los turnos inician a diferente hora por lo que si es conveniente manejar los inicios y finales de forma parametrizada.
Quedo a la espera de mas sugerencias y/o Opiniones
#7
Escrito 18 agosto 2009 - 08:50
Pues... disculpen si vengo con la mala onda de dar vuelta a este hilo pero yo tengo una preguntonta a por el millón de dólares.... ¿Y que se tiene pensado hacer con estas estructuras records? 8-)
¿Qué operaciones, métodos, acciones, funciones, etc deben serle aplicables?
Porque si hay algo que motivó la aparición del paradigma OO es eso: los records son datos crudos y las operaciones, por tanto la lógica, terminan disgregadas a él. Lo cual al ampliarse la complejidad lleva a mecanismos más complejos y enreversados para mantener en orden los registros.
¡Yo me juego a que es mejor que sean clases! Digo... sin tan bonita es la teoría OO, y sabiendo que Delphi nos lo hace más fácil la vida con este paradigma... ¿porqué involucionar y volver a lo arcaico?
Nomás ando de contrario
Sodulas,
#8
Escrito 18 agosto 2009 - 09:20
¡Hola! ¿Me extrañaron?
Pues... disculpen si vengo con la mala onda de dar vuelta a este hilo pero yo tengo una preguntonta a por el millón de dólares.... ¿Y que se tiene pensado hacer con estas estructuras records? 8-)
¿Qué operaciones, métodos, acciones, funciones, etc deben serle aplicables?
Porque si hay algo que motivó la aparición del paradigma OO es eso: los records son datos crudos y las operaciones, por tanto la lógica, terminan disgregadas a él. Lo cual al ampliarse la complejidad lleva a mecanismos más complejos y enreversados para mantener en orden los registros.
¡Yo me juego a que es mejor que sean clases! Digo... sin tan bonita es la teoría OO, y sabiendo que Delphi nos lo hace más fácil la vida con este paradigma... ¿porqué involucionar y volver a lo arcaico?
Nomás ando de contrario
Sodulas,
Código, quiere ver código
Salud OS
PD, claro que me extrañaba que no entraras en este asunto
#9
Escrito 18 agosto 2009 - 09:35
No me tienes amigo... no me tientes
Me encantaría aventar un código.... pero tengo una duda... ¿que es Cuenta y Suma? 8-)
Me gustaría saber bien eso antes de tirarme a la pileta. Digo, soy loquito pero no b*l*d* Bueno... medio b*****
Saludos,
#10
Escrito 19 agosto 2009 - 09:24
QUEREMOS CODIGO!
JAJAJAJAJAJA
Bueno Cuenta y Suma son valores devueltos por un query. la realidad es que estoy representando esos datos que se calculan cada hora y la suma por horas en un stringgrid.
Y ademas, si, despues del record pense en clases pero eso es lo que ni idea tengo!
He leido toda la teoria del coche, del pescadito, de la vaquita pero nunca he visto un ejemplo de clases y oop aplicado a la programacion del diario. ¿algun voluntario?
#11
Escrito 19 agosto 2009 - 01:35
Jeje...CODIGO! CODIGO! CODIGO! CODIGO!
QUEREMOS CODIGO!
JAJAJAJAJAJA
Bueno Cuenta y Suma son valores devueltos por un query. la realidad es que estoy representando esos datos que se calculan cada hora y la suma por horas en un stringgrid.
Y ademas, si, despues del record pense en clases pero eso es lo que ni idea tengo!
He leido toda la teoria del coche, del pescadito, de la vaquita pero nunca he visto un ejemplo de clases y oop aplicado a la programacion del diario. ¿algun voluntario?
Eso me sonó a "A ver, Delphius necesito que me hagas esto"
Dame unos minutos y veo que me sale.
Saludos,
#12
Escrito 19 agosto 2009 - 02:02
Inicialmente nos describías que un día estaba divido en 3 turnos, por consiguiente tiene 8 horas cada uno (24/3 =8).
Hasta vamos... ahora, volviendo al tema de cuenta y suma. ¿A que se refiere?
¿Conceptualmente hablando, hay algo que componga a cada turno? ¿La suma y cuenta hacen en realidad a esta "entidad" oculta?
Inicialmente nos decías que un turno tiene una hora de inicio y fin... eso, puede dejarse de lado puesto que es naturalmente y conceptualmente obvio si consideramos la primera afirmación: un día tiene 3 turnos, ergo: cada turno tiene un tiempo de inicio y fin.
A lo que voy es que no me queda claro el propósito de esos "registros" dentro de cada turno. ¿Son horarios?
Podrías ser más descriptivo por favor? Hay cosas en el aire un tanto sueltas... te agradecerías que nos brindases detalles más concretos.
Saludos,
#13
Escrito 19 agosto 2009 - 04:12
Cuenta y suma son campos devueltos por una consulta (query) y ademas son el titulo de dos columnas del StringGrid.
Actualmente hice esto en delphi:
type TTurno = record HInicio: string; HFinal: string; end; var fmInicio: TfmInicio; PrimerTurno: TTurno; SegundoTurno: TTurno; TercerTurno: TTurno; procedure TfmInicio.FormCreate(Sender: TObject); begin //Inicializamos los horarios de los turnos de trabajo with PrimerTurno do begin HInicio := '6:00:00'; HFinal := '13:59:59'; end; with SegundoTurno do begin HInicio := '14:00:00'; HFinal := '21:59:59'; end; with TercerTurno do begin HInicio := '22:00:00'; HFinal := '5:59:59'; end; end; {--------------------------------------------------------------------- Este procedimiento configura la cadena de consulta horario y suma los datos, escribe en la rejilla en la fila correspondiente ---------------------------------------------------------------------} procedure TfmInicio.CalculaTurnos(laHora: integer); var Inicio,_Final:string; begin //De acuerdo a la hora genera la cadena de consulta case laHora of //Armamos la fecha y hora para el primer turno 6..13:begin Inicio := DateToStr(Now) + ' ' + PrimerTurno.HInicio ; _Final := DateToStr(Now) + ' ' + PrimerTurno.HFinal ; end; //Armamos la fecha y hora para el segundo turno 14..21:begin Inicio := DateToStr(Now) + ' ' + SegundoTurno.HInicio ; _Final := DateToStr(Now) + ' ' + SegundoTurno.HFinal ; end; //El tercer turno abarca dos horas del dia anterior y cinco del actual 22..23:begin //sumar un dia para _Final Inicio := DateToStr(Now) + ' ' + TercerTurno.HInicio ; _Final := DateToStr(IncDay(Now,1)) + ' ' + TercerTurno.HFinal ; end; 0..5: begin //restar un dia para Inicio Inicio := DateToStr(IncDay(Now,-1)) + ' ' + TercerTurno.HInicio ; _Final := DateToStr(Now) + ' ' + TercerTurno.HFinal ; end; end; //Ejecuto la consulta que cuenta y suma los datos de las horas adecuadas dmDatos.SumaTurnos(Inicio,_Final); //Actualizo la lectura de la rejilla en la fila de turno adecuada EscribeTurnos(laHora); end;
Y con esto me resulta lo que queria hacer, no quito el dedo del renglon de que se puede mejorar. Quiero poner una imagen pero no me deja! Grrrrrrr!
#14
Escrito 19 agosto 2009 - 04:35
No le busques tres pies al gato que tiene cuatro Delphius.
Cuenta y suma son campos devueltos por una consulta (query) y ademas son el titulo de dos columnas del StringGrid.
.....
Y con esto me resulta lo que queria hacer, no quito el dedo del renglon de que se puede mejorar. Quiero poner una imagen pero no me deja! Grrrrrrr!
Excelente amigo FGarcia, qué bueno que has logrado un primer paso, y por supuesto que tiene mejora, no conozco código que no la tenga
By the way... Delph no le busca tres pies al gato, simplemente le gusta ayudar de manera integral...
Saludos !
#15
Escrito 19 agosto 2009 - 04:38
y por cierto....se tarda en integrar la imagen al mensaje, andaba peleando donde alojarla!!
#16
Escrito 19 agosto 2009 - 05:03
No, no lo dije en mala onda, solo fue una frase
y por cierto....se tarda en integrar la imagen al mensaje, andaba peleando donde alojarla!!
Ya ves una que es sensible ... jejeje, pero no pasa nada, vámonos de fiesta que ya es mitad de semana !!!!!
Saludos !
#17
Escrito 20 agosto 2009 - 10:28
unit uTurno; interface type TTurno = class private Ajuste: integer; FInicio: string; FFinal: string; function GetFinal: string; function GetInicio: string; public procedure EntreInicioFin(laHora: integer); constructor Create(Inicio, &Final: string); published property Inicio: string read GetInicio; property &Final: string read GetFinal; end; implementation uses SysUtils, DateUtils; { TTurno } function TTurno.EntreInicioFin(laHora: integer): boolean; begin case laHora of 22..23: Ajuste:= 1; 0..5: Ajuste:= -1; else Ajuste:= 0; end; Result:= HourOf(DateTimeToStr(FInicio)) < laHora < HourOf(DateTimeToStr(FFinal)); end; constructor TTurno.Create(Inicio, &Final: string); begin FInicio:= Inicio; FFinal:= &Final end; function TTurno.GetFinal: string; begin Result:= DateToStr(IncDay(Now,Ajuste)) + FFinal; end; function TTurno.GetInicio: string; begin Result:= DateToStr(IncDay(Now,Ajuste)) + FInicio; end; end.
Usandola así
var fmInicio: TfmInicio; ListaTurnos: TList<TTurno>; procedure TfmInicio.FormCreate(Sender: TObject); begin ListaTurnos:= TList<TTurno>.Create; //Inicializamos los horarios de los turnos de trabajo ListaTurnos.Add(TTurno.Create('6:00:00', '13:59:59')); ListaTurnos.Add(TTurno.Create('14:00:00', '21:59:59')); ListaTurnos.Add(TTurno.Create('22:00:00', '5:59:59')); end; {--------------------------------------------------------------------- Este procedimiento configura la cadena de consulta horario y suma los datos, escribe en la rejilla en la fila correspondiente ---------------------------------------------------------------------} procedure TfmInicio.CalculaTurnos(laHora: integer); var Turno: TTurno; begin for Turno in ListaTurnos do begin if Turno.EntreInicioFin(laHora) then //Ejecuto la consulta que cuenta y suma los datos de las horas adecuadas dmDatos.SumaTurnos(Turno.Inicio, Turno.&Final); end; //Actualizo la lectura de la rejilla en la fila de turno adecuada EscribeTurnos(laHora); end;
#18
Escrito 20 agosto 2009 - 11:13
deja la pruebo y comento
#19
Escrito 20 agosto 2009 - 11:42
Sólo lo decía porque no me quedaba bien en claro esos hh:mm dentro de cada turno... y la relación de éstos respecto a suma y cuenta.
Algo, conceptualmente, no me cuadraba... (y debo decir que no me cuadra)
¿Será que mi cerebro perdió la capacidad de hacer Round-Robin y ahora el proceso proyecto de grado acaparó todo mis recursos? ¿Funcionará el reset?
Saludos,
#20
Escrito 20 agosto 2009 - 12:13
mientras no se dañe el sector de arranque todo bien!!!!!
o el virus delphius2 acapare todo!!!