Cita:
Empezado por n03l
- Hay ocasiones en las que la fecha y hora del servidor firebird se ajusten de manera manual por una persona
|
Bien, para empezar, NADIE debe cambiar la fecha del servidor
, es más, un servidor no debe estar al alcance de ningún trabajador "normal" de la empresa.
En todo caso deja que el propio servidor se ajuste la hora automáticamente conectándose a un servidor horario, eso lo mantendrá siempre perfecto, tal y como ha indicado antes duilioisola.
Cita:
Empezado por n03l
lo que quiero esque todos clientes que se ejecuten en red manejen la misma fecha y hora del servidor firebird
|
Para eso solamente debes consultar la fecha y hora del servidor.
Cita:
Empezado por n03l
-Hay clientes que podrian estar abiertos por varios dias.
|
Como si están mil años, no importa, cada vez que hace falta saber la fecha y hora sólamente tienes que consultarla al servidor.
¿Cómo consultar la fecha y hora del servidor donde está instalado firebird?, pues es fácil, tienes diversas formas, esta es una de ellas.
Puedes tener funciones distintas para las fecha, hora y fechahora, ejemplo:
Código Delphi
[-]function getFechaServidor:TDateTime;
begin
Result := SelectDBmain('CURRENT_DATE','RDB$DATABASE')
end;
function getHoraServidor:TDateTime;
begin
Result := SelectDBmain('CURRENT_TIME','RDB$DATABASE')
end;
function getFechaHoraServidor:TDateTime;
begin
Result := SelectDBmain('CURRENT_TIMESTAMP','RDB$DATABASE')
end;
Una función común para no repetir el mismo código en cada una de las funciones anteriores:
Código Delphi
[-]function SelectDBmain(cCampo,cTabla:string;cCondicion:string=''):Variant;
var
Q : TQuery;
begin
Q := TQuery.Create(nil);
Q.Database := DMmain.DBmain; Q.Close;
Q.SQL.Text:='select '+cCampo+' from '+cTabla
Q.ExecQuery;
Result:=Q.Fields[0].AsVariant;
Q.Close;
FreeAndNil(Q);
end;
Y para usarlo, por ejemplo, desde un botón, para presentar el dato en un tdatetime:
Código Delphi
[-]procedure TForm1.bt1Click(Sender: TObject);
begin
if edFecha.Focused then edFecha.Date := getFechaServidor;
end;
O simplemente para mostrar un mensaje:
Código Delphi
[-]procedure TForm1.bt2Click(Sender: TObject);
begin
ShowMessage( FormatDateTime('dd.mm.yyyy hh:nn:ss', getFechaServidor) );
end;
Espero que te sirva.