Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2016
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 19
TOPX Va camino a la fama
Saludos,

Yo lo haría así:
Código Delphi [-]
var
  difMinutos: Extended;
...
Código Delphi [-]
  if not dm.q_HorarioXIDhora_ini.IsNull then
  begin
    difMinutos := Time() - dm.q_HorarioXIDhora_ini.AsDateTime; // TO-DO: Cambiar Time() por consulta a la bd trayendo CURRENT_TIMESTAMP.

    if difMinutos >= 0 then
    begin
      lblDifMinutos.Font.Color := clBlue;
    end
    else
    begin
      lblDifMinutos.Font.Color := clRed;
    end;

    lblDifMinutos.Caption := FormatDateTime('-hh:nn:ss.zzz', difMinutos);

    btnRegistrarAsistDoc.Enabled := (difMinutos > 5);
  end;
Pero como no sé qué versión de Delphi, ni qué componentes de acceso a base datos usa, pues puedo estar muy equivocado.

De todas maneras, espero que le sirva para guiarse.
-
__________________
"constructive mind, destructive thoughts"

Última edición por TOPX fecha: 12-08-2016 a las 22:34:58. Razón: Formato.
Responder Con Cita
  #2  
Antiguo 12-08-2016
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Detalles

Gracias TOPX, aqui te doy detalles de mi plataforma de desarrollo:

Delphi: 10.1 Berlin
Data Access: UniDAC 6.2.8

La pantalla con el codigo que me suministraste:

https://s10.postimg.org/ceslputeh/scr.jpg

Pero no puedo interpretar el resultado que obtuve.

Te agradecería tu ayuda amigo.

Saludos
Responder Con Cita
  #3  
Antiguo 12-08-2016
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 19
TOPX Va camino a la fama
Ciertamente, 15:44:32 - 14:40:00 no da 00:44:21.

Pero, la diferencia con lo esperado es muy poca, así que sospecho que
  • ese reloj con números verdes y la hora del equipo no están sincronizados, ó
  • la operación de resta se hizo veinte minutos antes
.
-

Fe de erratas:
Código Delphi [-]
btnRegistrarAsistDoc.Enabled := not (difMinutos > 5);
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #4  
Antiguo 12-08-2016
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 19
TOPX Va camino a la fama
Un programa básico para guiarse:
Label1 tiene la hora actual
Edit1 tiene la hora a restar
Label2 tiene horas, minutos y segundos resultantes
Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, System.SysUtils, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.StdCtrls, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  dif: Extended;
begin
  dif := Time() - StrToTime(Edit1.Text);
  Label2.Caption := FormatDatetime('hh:nn:ss', dif);

  if dif < 0 then
  begin
    Label2.Caption := '- ' + Label2.Caption;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := TimeToStr(Time()) + ' menos ';
end;

end.
Código Delphi [-]
object Form1: TForm1
  ClientHeight = 243
  ClientWidth = 527
  object Label1: TLabel
    Left = 56
    Top = 88
    Width = 31
    Height = 13
    Caption = 'Label1'
  end
  object Label2: TLabel
    Left = 384
    Top = 88
    Width = 31
    Height = 13
    Caption = 'Label2'
  end
  object Edit1: TEdit
    Left = 144
    Top = 85
    Width = 121
    Height = 21
    TabOrder = 0
    Text = '11:11:10'
  end
  object Button1: TButton
    Left = 288
    Top = 83
    Width = 75
    Height = 25
    Caption = '='
    TabOrder = 1
    OnClick = Button1Click
  end
  object Timer1: TTimer
    OnTimer = Timer1Timer
    Left = 256
    Top = 128
  end
end
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #5  
Antiguo 12-08-2016
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Fuentes

Amigo TOPX te muestro la pantalla donde se puede ver que el reloj y el sistema estan sincronizados:



Y el codigo fuente del proyecto con el script de la BD en MySQL.

http://www.mediafire.com/download/rh...Asistencia.zip

Me comentas estimado amigo

Un Abrazo
Responder Con Cita
  #6  
Antiguo 12-08-2016
santus santus is offline
Miembro
 
Registrado: ene 2006
Posts: 130
Poder: 21
santus Va por buen camino
Hola.
Tal vez esto te sea mas sencillo:

http://docwiki.embarcadero.com/Libra...MinutesBetween

Ten en cuenta que solo devuelve números positivos. Deberías preguntar cual fecha es mayor e invertir los parámetros si es necesario.

Saludos.
__________________
"El ordenador nació para resolver problemas que antes no existían." Bill Gates.
Responder Con Cita
  #7  
Antiguo 16-08-2016
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 21
bitbow Va camino a la fama
Mmm por que no lo haces todo dentro de la base de datos con un procedimiento almacenado, que ahi evalue los horarios en base a una tabla maestra, en caso de que lo sigas manejando con delphi trata los time o datetime como flotantes y realizas las comparaciones.

Saludos.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #8  
Antiguo 18-08-2016
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
ok

Cita:
Empezado por bitbow Ver Mensaje
Mmm por que no lo haces todo dentro de la base de datos con un procedimiento almacenado, que ahi evalue los horarios en base a una tabla maestra, en caso de que lo sigas manejando con delphi trata los time o datetime como flotantes y realizas las comparaciones.

Saludos.
Gracias bitbow por tu apreciacion, la tomare en cuenta, un saludo
Responder Con Cita
  #9  
Antiguo 12-08-2016
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Detalles

Gracias TOPX, aqui te doy detalles de mi plataforma de desarrollo:

Delphi: 10.1 Berlin
Data Access: UniDAC 6.2.8

La pantalla con el codigo que me suministraste:

https://s10.postimg.org/ceslputeh/scr.jpg

Pero no puedo interpretar el resultado que obtuve.

Aqui esta el codigo:

Código Delphi [-]
procedure TfrmAsistDocentes.lstHorarioActivoClick(Sender: TObject);
var
  horaIni, horaFin, horaActual: string;
  posPunto:integer;
  difMinutos:extended;
begin
  if lstHorarioActivo.ItemIndex<>-1 then
  begin
    posPunto:=pos('.',lstHorarioActivo.Items[lstHorarioActivo.ItemIndex]);
    idHorarioSelected:=StrToInt(Copy(lstHorarioActivo.Items[lstHorarioActivo.ItemIndex],0,posPunto-1));
    dm.q_HorarioXID.Close;
    dm.q_HorarioXID.Params[0].AsInteger:=idHorarioSelected;
    dm.q_HorarioXID.Open;

    if(length(dm.q_HorarioXID.FieldByName('hora_ini').AsString)>0)then
    begin
      if radEntrada.Checked then
        difMinutos:=Time() - dm.q_HorarioXID.FieldByName('hora_ini').AsDateTime;

      if radSalida.Checked then
        difMinutos:=Time() - dm.q_HorarioXID.FieldByName('hora_fin').AsDateTime;

      if difMinutos>=0 then
        lblDifMinutos.Font.Color:=clBlue
      else
        lblDifMinutos.Font.Color:=clRed;
      lblDifMinutos.Caption:=FormatDateTime('-hh:nn:ss.zzz', difMinutos) + ' min.';
      if difMinutos>5 then
        btnRegistrarAsistDoc.Enabled:=False
      else
        btnRegistrarAsistDoc.Enabled:=True;
    end;
  end;

end;

Te agradecería tu ayuda amigo.

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
calculo de diferencia entre dos horas y minutos gonza_619 Varios 1 22-05-2010 20:35:31
Cantidad de Minutos entre 2 Horas con el DateTimePicker ANDRES86 OOP 11 02-07-2007 23:11:19
MinuteSpan... minutos entre horas mjjj Varios 1 25-06-2007 17:28:59
Funcion para pasar de minutos a horas Asshole Varios 1 13-06-2005 13:23:27
Calcular Horas y minutos entre dos TTime Delphos Varios 4 26-01-2004 17:10:14


La franja horaria es GMT +2. Ahora son las 07:14:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi