Resulta que estoy haciendo una aplicación que tiene como una agenda, cuando llega el dìa y la hora en que programe la tarea se abre un formulario emergente (formulario de modificacion) y ahi quiero poner un combobox que sirva para postergar la misma. Las opciones para postergar son: 5 min, 10 , 15 , 20, 30, 45, 1 hora, 2, 3, 4, 6.
Hay alguna forma de poder incrementarle al campo del tipo Hora, los minutos-horas que tengo en el combobox? he probado con modificar campo, pero no encuentro ninguna funcion que sea para añadir minutos - horas.
Podrías utilizar la señal de combobox “Item: cambio de seleccionado” y un manejador de evento que utilice la función addSecondsToDateTime(tiempo, segundos) para sumar los segundos al valor de tiempo indicado.
Si la fecha y la hora las tienes en campos separados, puedes componer el tiempo con la función setDateTime(fecha, hora). Y los segundos los calculas en función al valor del combobox seleccionado. Si el combobox es de una tabla estática te puedes crear una función que pasándole un posible valor de la tabla estática se encargue de calcular el número de segundos equivalentes y lo devuelva como dato de retorno.
Muchas gracias, les comento que lo pude solucionar con la funcion addSecondsToHour, solo hice el calculo en segundos y ya.
Ahora, encontre otro problema que no me habia dado cuenta y es que, tarea que tiene como hora 23:00 y decido postergarla por 2 horas, ademas de cambiar la hora por 1:00 deberia de cambiar al dia, esto ultimo no logro controlarlo.
Precisamente, la función “addSecondsToDateTime(tiempo, segundos)” hace eso mismom ya que se trata de añadir segundos a campos o variables de tipo TIEMPO, es decir, Fecha+Hora
Gracias por la informacion. Veo que con un campo del tipo TIEMPO se puede solucionar.
hay alguna forma de que se pueda editar el campo TIEMPO por separado? es decir, en un formulario tener dos controles, uno de edición de fecha y otro de edición de hora. He probado pero cuando cambio la hora se cambia la fecha y cuando cambio la fecha se cambia la hora
Sí que podrías hacerlo utilizando máscaras. En el formulario utiliza dos controles de edición fecha/hora, asígnales el campo tiempo a ambos y en la propiedad de máscara para la fecha utilizas dd/MM/yyyy. En el campo para la hora la máscara sería HH:mm:ss o sin los segundos.
Muchas gracias a todos por compartir sus experiencias. Les cuento que pude solucionar el problema con el método de ebarbeito, es muy eficiente y recomendable.
Hola amigos. deseo de su ayuda. tengo una aplicación de parqueadero. tengo ya los campos y las funciones de hora de inicio y hora fin al igual el resultado en minutos, pero lo que no he podido es realizar la función de un pago de consumo de tiempo. O sea, que si ponemos un costo de 20.00 por cada 30 minutos, si marca una hora= total a 40.00, hora y 30 minutos total a 60.00 ¿como hago yo para que el resultado sea a intervalos cada 30 minutos? si inicia un cliente a las 10:00 am y finaliza a las 10.30 am el pago es 20.00 o si finaliza a las 11.00 el pago será de 40.00 como realizo este resultado del pago por intervalo de cada 30 minutos? Espero de u gran ayuda.
Saludos desde México
Si solo paga por tramos de 30 minutos enteros, lo que dice @infortic
Si paga por tramos de 30 minutos iniciado, realiza la misma operacion:
-Si no tiene decimales, te quedas con el entero.
-Si tiene decimales, te quedas con el entero superior.
Ejemplo:
-Inicio 10:00 - Fin 11:00 - Resultado: 2 - Importe: 2 por el valor que quieras
-Inicio 10:00 - Fin 11:10 - Resultado: 2,33 - Importe: 3 por el valor que quieras
hola gracias por responder. Pero no es así, así no da el resultado. Por ejemplo el costo de 30 minutos es de 20.00 si entra a las 10.00 y sale a las 10.30 total de pagar 20.00 pero si se pasa de los 30 minutos y sale a las 10.45 tiene que pagar las 2 horas 40.00 a partir de los 30 minutos en adelante ya se cobra por hora extra. si por ejemplo entra a las 10.00 y sale a las 11.30 debe de pagar 1 hora 30 minutos consumido que sera un total de 60.00 y aquí es el detalle de como hacer el total de cobro que sea por fracción. Yo lo que hice es correr los minutos y va dando el costo de cobro. 20.00=30 minutos .66=1 minuto. Cuando empieza a correr el tiempo va marcando el costo por minuto y si entra a las 10.00 y sale a las 10.50 marcaría total de minutos multiplicado por .66 y aquí es por fracción el cobro si sale a las 10.50 ya es cobro 2 horas, espero me haya dado a entender amigos y eso es lo que no puedo y necesito la ayuda de ustedes genios. Saludos
si, se cobra 30 minutos a 20.00 y si se pasa a 45 minutos sin llegar a la hora se cobra como hora. Estoy trabajando con 6x. La tabla se llama TIEMPO con submaestro ENTRADA Y SALIDA y en este submaestro se da el minuto y el costo que en el campo “pagar” esta asi: %MINUTOS%*%PRECIO-MINUTO%…y en la tabla Maestra se da el total del ticket e imprimir en ese total le puedo agregar descuento pero da el cobro como va corriendo los minutos y necesito saber por fraccion sin que llegue a los otros 30 minutos
Si es 30 minutos cobro 20.00 pero aunque no llegue a una hora, que sean 45 minutos como sea se cobra como si fuera ya la otra hora. LLegando a los 45 minutos se cobra otra hora. el total de pagar es lo que no le encuentro como seria la funcion para que antes de llegar a la hora ya cobre como si fuera una hora
Primero créate una funcion CALC_IMPORTE que reciba 3 parámetros, CANT_MINUTOS y MINUTOS_FRACCION y PRECIO_FRACCION y se la pones como contenido inicial al importe.
Se puede hacer con una fórmula normal y corriente, pero así lo tendrás más fácil si cambia la forma de calcularlo, simplemente cambias la función y puedes hacer varias instrucciones en lugar de una sola, te será más fácil.
No he probado este código, es de cabeza, es v7, para 6 cambia el choose por fDecidirDato, el cut por la función que sea e 6 (no la recuerdo) y debería funcionar
Set ( COMPLETO, cut(CANT_MINUTOS/MINUTOS_FRACCION, 0) )
Set ( RESTO, CANT_MINUTOS-(COMPLETO*MINUTOS_FRACCION) )
Set ( IMPORTE , (COMPLETO*PRECIO_FRACCION) + choose(RESTO>14,PRECIO_FRACCION,0) )