Ver Mensaje Individual
  #1  
Antiguo 28-06-2019
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Reputación: 20
javicho_villa Va por buen camino
Smile Formato Fecha en un DBGrid

Buenos días a todos ustedes amigos,

Recurro nuevamente a Uds. por un problema que se que debería ser sencillo pero por esas cosas de la vida se me hace un mundo y me esta tomando bastante tiempo resolverlo.

Tengo una base de datos en SQL y mi aplicación la estoy desarrollando en XE8, utilizo componentes ADO y al realizó consultas simples de las Tablas, pero cuando las muestro en un dbgrid no puedo cambiar el formato de fechas, pero si el formato de números hasta un grado.
Ahora enlazo un ADoQuery con DataSource y este aun DbGrid, en el código donde trato de cambiar el formato me sale diferentes errores, algunas veces pasa sin error pero nunca cambia el formato, aquí les paso el primer código.

Código Delphi [-]
  Cad := 'select * from Guia ';
  with self.CabeceraADOQuery do
    begin
      Close;
      SQL.Clear;
      SQL.Add(Cad);
      ExecSQL;
      Active := true;
      Last;
    end;
    //(CabeceraADOQueryFecha as TDateTimeField).DisplayFormat := 'dd/mm/yyyy';

    //TDateTimeField(CabeceraADOQuery.FieldByName('Fecha')).DisplayFormat := 'dd/mm/yyyy';

    TDateTimeField(CabeceraADOQueryFecha.Value).DisplayFormat := 'DD/MM/YYYY';

   //(Datos.DatosDM.CabeceraADOQuery.FieldByName('Fecha') as TFloatField).DisplayFormat:=dd/mm/yyyy;
   //(Datos.DatosDM.CabeceraADOQuery.FieldByName('Cantidad') as TFloatField).DisplayFormat := '###,##0.00';
   //(Datos.DatosDM.CabeceraADOQuery.FieldByName('Avance') as TFloatField).DisplayFormat := '###,##0.00';

Como verán he probado de todo pero nose por que detalle no funciona, también he agregado todas las columnas en el ADOQuery para ver si en cada columna podria salir por defecto el DisplayFormat, pero no es así.

También puse código en evento AdoQueryBeforeOpen - sin tener exito

Código Delphi [-]
procedure TGuiaForm.CabeceraADOQueryBeforeOpen(DataSet: TDataSet);
begin
  TDateTimeField(CabeceraADOQueryFecha.Value).DisplayFormat := 'DD/MM/YYYY';
  //TDateField(self.CabeceraADOQueryFecha).DisplayFormat := 'DD/MM/YYYY'
  //(CabeceraADOQuery.FieldByName('Fecha') as TDateTimeField).DisplayFormat := 'DD/MM/YYYY';
end;

por ultimo también probé en el evento GetCellText con la misma mala suerte
Código Delphi [-]
procedure TGuiaForm.ListaGetCellText(Sender: TObject; Field: TField;
  var Text: string);
begin
  if Field.FieldName='Fecha' then
    (Lista.Columns[1] := StrToDate(FormatDateTime('DD/MM/YYYY',VarToDateTime(CabeceraAdoQuery.FieldByName('Fecha').AsVariant)));
//    (Lista.Columns[1].Field as TDateTimeField).DisplayFormat := 'DD/MM/YYYY';
    //(CabeceraAdoQuery.FieldByName('Fecha') as TDateTimeField).DisplayFormat := 'DD/MM/YYYY';
    //Field.ByName()
end;

Amigos les pido me echen una mano con este problema, un fuerte abrazo para todos.

PD. Para el formato de numero solo puedo cambiarlo los decimales, pero las comas nose porque no acepta '0.00', cual seria el formato correcto (0,000.00) ó (#,###.##)
__________________
Javier Villa Sánchez
jvilla@andreaproducciones.com
Responder Con Cita