Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como tomar una hora que ya paso? (https://www.clubdelphi.com/foros/showthread.php?t=28515)

Luis Alberto 21-12-2005 21:34:37

Como tomar una hora que ya paso?
 
Espero el titulo de hilo este correcto de no ser asi disculpenme.


Trabajo en una agencia aduanal y requiero saber como puedo hacer esto.

Las operaciones inician a las 9:00:00 am y en el trascusros de todo el dia se pagan Traficos, entonces si mi aplicacion unicia a las 9:00 am no existora nada pagado todavia, por lo cual la primera vez que inici mi programa deve de ser a las 12:00:00 pm para que me extraiga la informacion que s epago desde las 9:00:00 hasta las 12:00:00.

Entonces no se como guardar las horas de inicio en este caso las 9:00:00 por que las 12:00:00 seria cuando el programa inicie.



Si alguien me puede ayudar se lo agradesco


Saludos...

dec 21-12-2005 21:37:52

Hola,


Cita:

Empezado por Luis Alberto
Como tomar una hora que ya paso?

Hay cosas que ni Delphi... ;)

ContraVeneno 21-12-2005 21:44:18

Cita:

Empezado por dec
Hola,
Hay cosas que ni Delphi... ;)

:eek::eek::eek:

No entendí el problema :confused::confused:
¿Registras los cobros de alguna manera? es decir, ¿hay algún registro de la hora en que realizó el cobro?

dec 21-12-2005 21:49:17

Hola,


Cita:

Empezado por Contraveneno
No entendí el problema :confused::confused:

Tempus fugit, amigo. ;)

Luis Alberto 21-12-2005 22:29:00

Me refiero que mi aplicacion corre alas 12:00:00 pm y lo que realiza es que un quey me extraer los datos de la bd que tenga fecha de pago hoy 21/12/2005 y que la hora de pago sea mayor a 9:00:00 am pero menor a 12:00:00 pm

si me explique

Luis Alberto 21-12-2005 22:32:42

entonces como pueden darse cuanta tengo la hora final que son las 12:00:00 pm pero la de inicio como la extraigo?

OSKR 21-12-2005 22:34:31

:confused: Si tu aplicacion inicia a las 12...........como piensas capturar u obtener la data previamente pasada? si hay restricción de horario para el inicio de tu exe puedes montar algo en background...........no se..........en el inicio de sesion o un servicio.....pero si necesita ingreso de data me qedo con el primero o volar la restricción, realmente no entiendo bien el problema ( si es q lo hay :eek: ), aqi hay algo para registrar tu exe al iniciar una sesión en caso d q otros usuarios sean los q la tengan previo a las 12:

Código:

int AgregarReg()
 
{ LONG status;
 
HKEY hKey;
 
AnsiString programa=ParamStr(0)+" /Run";
 
status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_WRITE,&hKey);
 
if(status != ERROR_SUCCESS)
 
return status;
 
RegSetValueEx(hKey,"Jefa",0,REG_SZ,programa.c_str(),programa.Length()+1);
 
RegCloseKey(hKey);
 
return ERROR_SUCCESS;
 
}
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
 
{ int Par=ParamCount();
 
if( Par!=1)
 
{ exit(0);
 
}
 
if( ParamStr(1).UpperCase()=="/REG")
 
{ AgregarReg();
 
exit(0);
 
}
 
if( ParamStr(1).UpperCase()!="/RUN")
 
exit(0);
//.........
 

Detesto cuando el codigo qeda mal tabulado despues del pegado :mad: :mad: :mad:

Luis Alberto 22-12-2005 19:45:15

Retomando dicho problema vuelvo a plantearlo:

Tengo una aplicacion que va iniciar en un servidor y dicha aplicacion me extrae datos de una BD con un query dicho query trae la condicion de extrar los datos dependiendo del dia y la hora de pago mismas que son pasadas por parametros

Select *from facturas
where
(fecha:='fecha que paso por parametro')
and (hora>='Hora inicial')
and (hora<=Hora final')



Entonces como pueden darse cuenta tengo la fecha, la hora final pero como obtener la hora inicial para que se puede cumplir la condicion del query

Espero ahora si me haya explicado bien

La verdad me urge, espero me ayuden


Saludos

ContraVeneno 22-12-2005 19:54:55

la hora inicial, ¿sería la hora del primer pago del día en cuestión?

Paoti 22-12-2005 20:41:00

función Min() en SQL
 
si es cómo dice ContraVeneno.


puedes hacer eso

Código SQL [-]
Select *from facturas
where
(fecha:='fecha que paso por parametro')
and (
hora>= SELECT MIN('HORA INICIAL') FROM FACTURAS F2 WHERE F2.FECHA = 'FECHA QUE PASO COMO PARAMETRO'
)
and (hora<=Hora final')


La clave es:

Código SQL [-]
 
SELECT MIN('HORA INICIAL') 
FROM FACTURAS F2 
WHERE F2.FECHA = 'FECHA QUE PASO COMO PARAMETRO'

Obtienes le primer registro (porque es la hora inicial) y ese dato lo usas como
el primer filtro en tu campo de hora inicial.



¿Sí era eso?



NaCl-U2.



Féliz Navidad

Luis Alberto 22-12-2005 21:02:31

Fijate si la aplicacion inicia a las 9 yo quiero reportar lo que se haya pagado desde las 9 am a las 12:00pm me explico, entonces si la aplicacion inicia las 9 guardar esa hora y hasta que sean las 12 pm reportar eso despues quiero reportar lo de las 12 hasta las 5:00pm entonces la inicial es 12 y la final 5 y despues las 5 seria la inicial y la final las 8:00 pm y asi sucesivamente

Luis Alberto 22-12-2005 21:06:08

pero ademas se puede dar el caso que no haya nada de pago 9:00 am ya 12:00 pm si no apartir de las 12:00 a 5:00 en ese lapso si hubo pago me explico?

Luis Alberto 23-12-2005 17:33:42

Me gustaria saber si alguien me puede informar como utlizar bien el componente de Timer.

vtdeleon 23-12-2005 18:16:14

Bueno, el Timer no tiene mucha ciencia que digamos. Solo tiene un Evento, en el cual pones el codigo que deseas que se ejecute cada cierto tiempo, especificado por ti en milisegundo en la propiedad Interval. Una propiedad que (quizas) utilizaras a menudo sea el Enable para activar y desactivar a tu criterio.


Saludos

Luis Alberto 23-12-2005 18:29:33

Mira pregunte sobre el Timer por lo siguiente.

Mi aplicacion va inicar a las 9:00 am y no se volvera a detener a menos que el servidor tenga que a pagarse...

Bueno entonces si quiero que el proceso que manejo en el query se inicie a partir de las 12:00 pm como primera vez, realiza el proceso y termina la aplicacion sigue ahi no se apaga, despues que sean las 15:00 pm quiero que vuelva a inicar dicha aplicacion y realiza el proceso de igual manera termina y sigue vigente hasta las 18:00 se inicia el otro proceso entonces quiero que el proceso inicie cada intervalo de 3:00 horas. me podrias decir con algun ejemplo como platearia esto.


De ante mano gracias

rastafarey 26-12-2005 15:49:46

Resp
 
No estoy entendiendo un coño. Como no entendo y veo que quieren leer uan data dentro d eun rango de fecha es logico tener un dos campos en la data uno fecha de creacion y otro fecha de modificacion(cosa que tengo en todas mis tablas para realizar aauditorio) y de esta manera se octien lo deseado.

Lepe 26-12-2005 21:58:29

Iba a decir que estaba totalmente de acuerdo con la primera frase de rastafarey, hasta que leí la frase del millón:

Cita:

Empezado por Luis Alberto
quiero que el proceso inicie cada intervalo de 3:00 horas. me podrias decir con algun ejemplo como platearia esto.

Ahhhhh hombre empecemos por ahí. Si hubieras dicho esto desde un principio, no se habría formado el pollo con la famosa "hora de inicio".

Colocamos un Objeto TTimer en la ventana, como ya dijo vtdeleon, despues en su propiedad Interval colocamos 180000 (que es el resultado de: 3 horas * 60 minutos * 1000 segundos), ya que el tiempo se le da en milisegundos.

Al iniciar el programa, se guarda en un archivo la hora actual, que será la hora de inicio para las consultas. Si en este momento ha de hacerse los reportes... pues se llama a la función que se encarga de eso, si no debe hacerse, pues se pone el Timer Activo y ... a esperar 3 horas.

En su evento Ontimer ponemos algo así:

- Leer del archivo la hora de inicio, y guardarla en una variable.
- Grabar en el archivo la hora actual, (que sirve de hora de inicio, la próxima vez que se ejecute este evento, recuerda, se ejecutará cada 3 horas)
- Hacer los reportes o lo que sea.
- Se acabó.

Al hacer los "reportes o lo que sea", simplemente será ver si la consulta que se abre tiene resultados, es decir:
Código Delphi [-]
  if not Query1.IsEmpty then
  begin
    // significa que hay resultado, es decir hay pagos entre el rango de horas, por 
   //tanto, hacemos lo que se deba hacer....
  end
  else 
    // no hacemos nada, porque no hay pagos.


saludos

Luis Alberto 29-12-2005 16:17:02

Gracias
 
Gracias por su colaboracion, ya pude realizar lo que necesitaba muchas gracias a todos por su paciencia..


Saludos...


La franja horaria es GMT +2. Ahora son las 16:09:38.

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