Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-09-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question ¿Como Actualizar TimeStamp?

Actualizar TimeStamp
Hola.
no se como hacer para actualizar un campo TimeStamp de firebird,
Tengo la situación asi. tengo varios valores, constantes,
cada valor seran minutos o seran horas.
asi.

Código Delphi [-]
const
1:integer;//si el valor es 1 entonces, Actualizar el TimeStamp en 5 min
2:integer;//si el valor es 2 entonces, Actualizar el TimeStamp en 10 min
3:integer;//si el valor es 3 entonces, Actualizar el TimeStamp en 15 min
//y asi hasta llegar a 
10:integer;//si el valor es 10 entonces, Actualizar el TimeStamp en 45 min
11:integer;//si el valor es 11 entonces, Actualizar el TimeStamp en 60 min
15:integer;//si el valor es 15 entonces, Actualizar el TimeStamp en 2 Horas 
//el valor del timestamp va a ser cualquier hora. que se tiene
//que actualizar despues de verificar su valor,
//se actualiza el valor del timestamp, al dia y la hora actual, (Current_timeStamp) mas el valor de la constante ya sea 1 ,2 ,3 ....10,11,15. 
este es mi seudocodigo
 
if 1 then tiemestamp ACTUALIZADO_EN_5_MIN
  else
if 2  then tiemestamp ACTUALIZADO_EN_10_MIN

ya aqui no se como leer el valor del tiempo actual, y determinar si el valor del timestamp se actualiza solo la parte de los minutos o la de las horas y como hacer esa actualización..
Ayuda de favor,, no se como
Gracias
Responder Con Cita
  #2  
Antiguo 13-09-2007
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Suma los valores a la fecha:

Bien... Crearemos una función de manera que se le pueda sumar el valor de tiempo que quieras a una variable de tipo TDateTime:

Código:
function ActualizaTiempo(ElTiempo:TDateTime; hh, mm, ss: word): TDateTime;
begin
  try
    Result := ElTiempo + EncodeTime(hh, mm, ss);
  except
    Result := ElTiempo;
  end;
end;
Ahora suponte que tienes tu campo TimeStamp que se llama MiHora, pues para sumarle 5 minutos sería;

Código:
  MiQuery.Edit;
  MiQueryMIHORA.AsDateTime := ActualizaTiempo(MiQueryMIHORA.AsDateTime, 0, 5, 0);
  MiQuery.Post;
Lo he hecho de memoria, sin probar, pero si tiene alguna incidencia estoy seguro que sabrás solventarla y perdonarla.

Saludos
Responder Con Cita
  #3  
Antiguo 15-09-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
afxe
me sirvio mucho la funcion, gracias.

usando los componentes interbase de corelab
me quedo algo asi.

la funcion solo faltaba agregar un campo mas
y en lugar de post use insert

Código Delphi [-]
IBCQuery0.Edit;
IBCQuery0.Fields[2].AsDateTime := ActualizaTiempo(IBCQuery0.Fields[2].AsDateTime, 0, 5, 0, 0);
IBCQuery0.Insert;
Código Delphi [-]

function ActualizaTiempo(ElTiempo:TDateTime; hh, mm, ss, ms: word): TDateTime;
begin
  try
    Result := ElTiempo + EncodeTime(hh, mm, ss, ms);
  except
    Result := ElTiempo;
  end;
end;

Donde se me dificulto mucho es en como aplicar la función de
actualizarfecha
yo la puse dentro de un boton , ejecutando un query. con el IBCQuery
con el nombre de IBCQuery0
Código Delphi [-]

procedure TForm1.Button3Click(Sender: TObject);
var SQL, SQLUTime, Condicion:String;
    i , ID, TipoIncremento: integer;
    HoraACambiar: TDateTime;
begin
//MiHora :=  ActualizaTiempo(Time)
ID := 0;
Condicion := Edit1.Text;//es una cadena de texto para el sql script
SQL := 'select * from tabla_tiempo where Field01 = ';
//Ejecutamos el query para obtener todo lo que corresponda a una condicion dada.
 try
    IBCQuery0.SQL.Clear;
    IBCQuery0.SQL.Text := SQL + Condicion;
    IBCQuery0.Execute;
finally

end;
//  el resultado lo procesamos, enseguida. para pasar el valor de la variable timestamp
  try
    for i := 0 to IBCQuery0.RecordCount do
    begin
            ID := (IBCQuery0.Fields[0].AsInteger);
TipoIncremento := (IBCQuery0.Fields[1].AsInteger);
       HoraACambiar  := (IBCQuery0.Fields[2].AsDateTime);
   IBCQuery0.Next;
    end;

  finally
//
  end;
//Ejecutamos un query para actualizar el campo timestamp del canal al que correspodne el ide
SQLUTime := 'update tabla_tiempo set MiHora = Current_timeStamp where Field01 =  ';
try  //Usa params by name
   IBCQuery0.SQL.Clear;  //cambia por add que da error de where no se bien por que
   IBCQuery0.SQL.Text := SQLUTime + IntToStr(ID);
   IBCQuery0.Execute;
finally

end;
//hacemos u query para obtener de nuevo todos los campos
//del timestamp tomamos ese valor y  lo modificamos si tiene que ser por minutos o por horas
//--------------
SQL := 'select * from tabla_tiempo where Field01 = ';
 //ejecutamos el query para obtener todo loq eu corresponda a una condicion dada.
 try
    IBCQuery0.SQL.Clear;
    IBCQuery0.SQL.Text := SQL + IntToStr(ID);
    IBCQuery0.Execute;
finally

end;
//creo que ya quedo 
 try
IBCQuery0.Edit;
IBCQuery0.Fields[2].AsDateTime := ActualizaTiempo(IBCQuery0.Fields[2].AsDateTime, 0, 5, 0, 0);
IBCQuery0.Insert;
  finally
//
  end;
end;

si saben de alguna forma mejor, me avisan por que esta es la unica que
logre que funcionara,
No me parece bueno que use dos selec * from
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
timestamp y milisegundos Abel Garcia Firebird e Interbase 1 19-09-2005 01:45:06
timestamp y milisegundos ya...... Abel Garcia Firebird e Interbase 0 17-09-2005 07:17:38
Utilizar TimeStamp jmedina Varios 6 13-12-2004 18:40:37
¿Cómo restar un segundo a un timestamp? Carlitos Firebird e Interbase 4 16-03-2004 21:36:23
Timestamp y bde 5.2 Toni Firebird e Interbase 2 27-05-2003 09:26:33


La franja horaria es GMT +2. Ahora son las 18:35:48.


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
Copyright 1996-2007 Club Delphi