• Viernes 8 de Noviembre de 2024, 23:03

Autor Tema:  Tdatetime Ultima Hora  (Leído 2322 veces)

figalamx

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Tdatetime Ultima Hora
« en: Miércoles 24 de Mayo de 2006, 01:30 »
0
Saludos a los miembros del foro!

Es mi primer mensaje en el foro y ya hice una busqueda pero no encontre algo parecido. Mi problema es este: Tengo una tabla en una BD access donde se van guardando datos de peso que se reciben de una bascula, se hacer una consulta entre dos horas diferentes por ejemplo entre 12:00 y las 15:20 o semejantes pero no encuentro como hacer la consulta de este modo:  entre ESTE momento y el Inicio de la Hora por ejemplo para mi son las 18:25 y quiero saber (p.e.) cuantos registros se han creado entre las 18:00 y las 18:25 o tal vez entre las 19:40 y las 19:00 es decir la ultima hora, esto deberia de ser solo presionando un boton.
Uso Delphi 7
¡Por delante gracias por la ayuda y su tiempo prestado a este mensaje!

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Tdatetime Ultima Hora
« Respuesta #1 en: Viernes 26 de Mayo de 2006, 00:08 »
0
Supongo que en la consulta SQL usas el BETWEEN con dos fechas de la tabla.
No se como haces para ingresar la fecha en las tablas, pero la idea seria que puedas convertir la fecha de tipo TDateTime que es la que te devuelve la funcion de la hora de delphi (no tengo el compilador a mano, pero debe ser GetDate, GetDateTime o algo así) al formato de fecha de las bases de Datos.

Revisa este post que tienes ahí unos links que te pueden servir.
http://foros.solocodigo.com/index.php?showtopic=21600

lamentablemente ahora me quede sin mi maquina por un par de días y no tengo el compilador para buscar.

Los pasos genericos serían:
1)obtener la fecha actual
2)Convertir el formato TDateTime de la fecha que obtuviste a una cadena de texto con el formato de la fecha de la base de datos.
3)hacer la cosulta y en una fecha colocar la de la tabla y en la otra fecha la fecha que obtuviste formateando la actual. (revisa el link para ver como se puede formatear una fecha a una cadena con otro formato)

Si tenes dudas sobre alguno de los pasos avisame y veo que puedo hacer.
Por si las dudas, postea tambien la constula que usas para obtener registros entre dos fechas.

figalamx

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Tdatetime Ultima Hora
« Respuesta #2 en: Sábado 27 de Mayo de 2006, 18:45 »
0
Gracias Enko! mira el codigo que actualmente uso es este:

Código: Text
  1. //Cuando se presiona el boton de Aceptar en la consulta de Hora y Fecha
  2. procedure Tform2.ConsultaHoraFecha;
  3. begin
  4.   if RadioGroup1.ItemIndex = 0 then
  5.     With ADOQuery1 do begin
  6.       Close;
  7.       SQL.Clear&#59;
  8.       miSQL := '';
  9.       miSQL := 'SELECT * FROM Captura ' +
  10.                'WHERE (HoraFecha BETWEEN :FIni AND :FFin)' +
  11.                'AND (Bascula = 1) ' +
  12.                'ORDER BY Consecutivo';
  13.       SQL.Add(miSQL);
  14.       Parameters.ParamByName('FIni').Value := FechaInicio;
  15.       Parameters.ParamByName('FFin').Value := FechaFinal;
  16.       Open;
  17.     end;
  18.   With ADOBascula1 do
  19.       Begin
  20.         Close;
  21.         SQL.Clear&#59;
  22.         SQL.Add('SELECT COUNT(*) AS Registros, ' +
  23.                 'SUM (Piezas) AS Total ' +
  24.                 'FROM Captura ' +
  25.                 'WHERE (HoraFecha BETWEEN :FIni AND :FFin)' +
  26.                 'AND (Bascula = 1) ');
  27.       Parameters.ParamByName('FIni').Value := FechaInicio;
  28.       Parameters.ParamByName('FFin').Value := FechaFinal;
  29.       Open;
  30.     end;
  31.  

La fecha inicio y fecha final son capturados desde dos text box donde el operador ingresa esos datos.
Mi intencion es hacer esta misma consulta pero la fecha inicial debera ser el inicio de la hora actual es decir que yo debo realizar cada hora o fraccion de hora esta misma consulta con solo presionar un boton p.e.

FechaInicio: xx/xx/xx 12:00
FechaFinal:  xx/xx/xx 12:59:59
o
FechaInicio: xx/xx/xx  12:00
FechaFinal:  xx/xx/xx  12:40

y asi siempre debera ser desde el inicio de la hora en curso. Espero haberme hecho entender y si aun no soy claro haganmelo saber.

Gracias de antemano!

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Tdatetime Ultima Hora
« Respuesta #3 en: Sábado 27 de Mayo de 2006, 21:19 »
0
Código: Text
  1.  
  2. var
  3.   today : TDateTime;
  4. begin
  5.   today := Time;
  6.   ShowMessage('today has date = '+DateToStr(today));
  7.   ShowMessage('today has time = '+TimeToStr(today));
  8. end;
  9.  
  10. salida
  11.    today has date = 30/12/1899
  12.    today has time = 13:37:25
  13.  
  14.  

lo que te sierve a vos es:
Código: Text
  1.  
  2. ShowMessage('Fecha y hora de hoy es: ' +DateToStr(today) + TimeToStr(today));
  3.  
  4.  
O bien
Código: Text
  1.  
  2. FechaInicial: String;
  3. FechaInicial := DateToStr(today) + ' ' + TimeToStr(today);
  4.  
  5.  

figalamx

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Tdatetime Ultima Hora
« Respuesta #4 en: Miércoles 7 de Junio de 2006, 03:21 »
0
Gracis Enko por la ayuda! Disculpa por no haber respondido antes pero he andado en otras cuestiones. Mira creo que ya resolvi este problema aun no pruebo en la ejecucion de la consulta pero creo que ya esta!. Anexo un zip y estoy abierto a sugerencias para mejorarlo si es que reinvente la rueda. Todo lo que necesito es el inicio de la hora actual.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.