Ver Mensaje Individual
  #3  
Antiguo 15-09-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Reputación: 24
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