Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como Agregar una Columna a un DBgrid (https://www.clubdelphi.com/foros/showthread.php?t=71106)

ranaya 01-12-2010 01:03:22

Como Agregar una Columna a un DBgrid
 
Hola.
tengo un debgrid con los campos
Cita:

No. Fecha Serie
102 | 74751 | R
107 | 74749 | J
etc.. esto es tomado de una tabla TPS por ODBC y requiero reprecentar la fecha en un formato que el usuario comprenda. Para lo cual realice dos funciones:

Código:

const
    Fecha2000 = 72687;

implementation

//Funcion que recibe una entero del TPS y la convierte en formato de Fecha
function TpsToDate(FechaTPS:Integer): TDateTime;
var dtFecha2000 : TDateTime;
    Dias : Integer;
begin
    FechaTps:= 74749;
    Dias:= FechaTPS-Fecha2000;
    dtFecha2000 := EncodeDate(2000, 1, 1);
    dtFecha2000 := dtFecha2000 + Dias;
    Result :=  dtFecha2000;
end;

//Funcion que recibe una fecha y la convierte en entero para TPS.
function DateToTPS(FechaParaTPS:TDateTime): Integer;
var dtFecha2000 : TDateTime;
    FechaTPS,Dias : Integer;
begin
    dtFecha2000 := EncodeDate(2000, 1, 1);
    Dias := DaysBetween(FechaParaTPS, dtFecha2000);
    FechaTPS:= Fecha2000 + Dias;
    Result :=  FechaTPS;
end;

Mi problema es cómo convertir el valor del campo FECHA y asignarlo al DBgrid
Algo como:
Código:

Dbgrid1.DataSource.DataSet.FieldValues['FECHA']:=TPStoDate(Dbgrid1.DataSource.DataSet.FieldByName('FECHA').AsInteger);
Para que me actualice todos los campos FECHA en el Dbgrid, o ponerlo como otra columna, solo que no encuentro la forma de hacerlo


De antemano gracias

ecfisa 01-12-2010 01:19:19

Hola.

Se me ocurre que una forma podría ser aprovechar el evento OnGetText de los campos fecha para mostrarlas.

Algo como:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    ...
    procedure FormCreate(Sender: TObject);
    ...
  private
     procedure FechaGetText(Sender: TField; var Text: string; DisplayText: Boolean);
  public
  end;
...
Interface

const
     Fecha2000 = 72687;

function TpsToDate(FechaTPS:Integer): TDateTime; 
var 
   dtFecha2000 : TDateTime;
   Dias : Integer;
begin
    FechaTps:= 74749;
    Dias:= FechaTPS-Fecha2000;
    dtFecha2000 := EncodeDate(2000, 1, 1);
    dtFecha2000 := dtFecha2000 + Dias;
    Result :=  dtFecha2000;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Tu_DataSet.FieldByName('FECHA_TPS1').OnGetText:= FechaGetText;
  Tu_DataSet.FieldByName('FECHA_TPS2').OnGetText:= FechaGetText;
  ...
end;

procedure TForm1.FechaGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text:= DateToStr( TPSToDate(Sender.AsInteger) );
end;
...

Saludos. :)


La franja horaria es GMT +2. Ahora son las 02:37:08.

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