Ver Mensaje Individual
  #5  
Antiguo 02-06-2020
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Este es un ejemplo real que tengo en mi código:
No son campos persistentes, por lo que tengo que explicitamente decirle que tipo de campo es.
Lo que busco es que las fechas no muestren la hora y los valores numéricos se muestren con dos decimales y separador de miles.
Código Delphi [-]
procedure TDMEmpleado.xEmpleadoAfterOpen(DataSet: TDataSet);
begin
  // Formato de campos
  with xEmpleado do
  begin
     TDateField(FieldByName('FECHA_NACIMIENTO')).DisplayFormat := 'dd/mm/yyyy';
     TDateField(FieldByName('FECHA_ANTIGUEDAD')).DisplayFormat := 'dd/mm/yyyy';
     TDateField(FieldByName('FECHA_INICIO_CONTRATO')).DisplayFormat := 'dd/mm/yyyy';
     TDateField(FieldByName('FECHA_FIN_CONTRATO')).DisplayFormat := 'dd/mm/yyyy';
     TDateField(FieldByName('FECHA_VENCIMIENTO_EPI')).DisplayFormat := 'dd/mm/yyyy';
     TDateField(FieldByName('FECHA_VALIDEZ_CURSO')).DisplayFormat := 'dd/mm/yyyy';
     TDateField(FieldByName('FECHA_ENTREGA_MATERIAL_PRESTADO')).DisplayFormat := 'dd/mm/yyyy';
     TDateField(FieldByName('FECHA_REVISION_MEDICA')).DisplayFormat := 'dd/mm/yyyy';

     TNumericField(FieldByName('PORC_JORNADA')).DisplayFormat := ',0.00';
     TNumericField(FieldByName('HORAS_ANUALES')).DisplayFormat := ',0.00';
  end;

  // Tablas unidas mediante DataSource
  xEpi.Open;
  xCurso.Open;
  xMaterialPrestado.Open;
  xDocumento.Open;
  xRevisionMedica.Open;

[...]

Este código lo he puesto en el AfterOpen porque los campos son dinámicos.
En el caso de tener campos estáticos, pongo el código de formato en el OnCreate del DataModule.
He visto que para DataSets grandes es mucho más rápido tener los formatos puestos antes de abrirlos.
Responder Con Cita