Estimados buenas tardes..
Tengo el siguiente código, en donde después de realizar una consulta SQL donde en unos de sus campos muestra fechas, en un formato dd/mm/aaaa, al exportarlo a excel con este código, las fechas (alguna) me aparecen en formato al revés mm/dd/aaaa, sabrían por que es ese detalle?
procedure TFListaSrv.Excel1Click(Sender: TObject); var excel:Variant; fila,columna:Integer; Data : TDataSet; begin // Realizamos la consulta with DMod1.ADOQueryCL do begin Active:= False; Close; SQL.Clear; SQL.Add(TSQL); Open; Active:= True; // --------------------------------- ClientDataSet1.Close; ClientDataSet1.SetProvider(DMod1.DataSetProviderCL); ClientDataSet1.Open; // --------------------------------- End; // ---------------------------- // ---------------------------- msInfo('Se iniciará el Proceso de Exportación a Excel, Por favor sea paciente mientras finaliza.','Exportación a Excel'); Screen.Cursor:=crHourGlass; // ---------------------------------------- // Inicia el Proceso de Exportación a Excel // ---------------------------------------- try excel:=CreateOleObject('Excel.Application'); except Screen.Cursor:=crDefault; msError('Excel no se pudo iniciar, la posible causa sea que el Programa MS Excel no este instalado, favor de Verificar.','Error Interno..'); exit; end; excel.Visible:=true; Data:=DMod1.ADOQueryCL; // Componente usado Table/Query Data.First; fila:=1; excel.Workbooks.Add; //Poner los títulos for columna := 0 to Data.FieldCount-1 do begin excel.Cells[fila,columna + 1].Value:=Data.fields[columna].DisplayName; end; fila:=2; //Desenganchar controles para agilizar Data.DisableControls; try Screen.Cursor:=crHourGlass; while not(Data.eof) do begin for columna := 0 to Data.FieldCount-1 do excel.Cells[fila,columna + 1].Value:=trim(Data.Fields[Columna].asString); Data.Next; fila:= fila + 1; end; Except Screen.Cursor:=crDefault; msError('Atención, se produjo un error en la exportación, Favor de Notificar al Adminisrador.','Error'); DMod1.ADOQueryCtrlONT.Close; DMod1.ADOConnection1.Close; DMod1.ADOConnection1.Connected:= False; Exit; end; Screen.Cursor:=crDefault; msInfo('El Proceso de exportación a Excel a Finalizado.','Listo..'); Data.EnableControls; end;
La consulta SQL la almaceno en la variable TSQL.
Uso Mariadb como motor de almacenamiento y componente ADO para realizar la consulta.
la consulta se hace de la siguiente manera ,,
with DMod1.ADOQueryCL do begin Active:= False; Close; SQL.Clear; SQL.Add('SELECT ctrlont.INDEX_ID as ID , ctrlont.FRAME_ID as FRAME, ctrlont.SLOT_ID as SLOT, ctrlont.PORT_ID as PUERTO, ctrlont.ONT_ID as ONT, ctrlont.CONT_CL as CONTRATO, clientes.NOM_CL as NOMBRE, clientes.APPAT_CL as A_PATERNO, '); SQL.Add('clientes.APMAT_CL as A_MATERNO, ctrlont.ZONA_CL as ZONA, ctrlont.COLOR_CL as COLOR, clientes.COL_CL AS COLONIA, clientes.CALLE_CL as CALLE, ctrlont.poste as POSTE, onts.ESTATUS_ONT as ESTATUS , '); SQL.Add('CAST(IF(onts.ESTATUS_ONT="ACTIVO",ctrlont.FECHA_ALTA,ctrlont.FECHA_SUSPEN) as Date) as FECHA, ctrlont.PAQT_SRV as PAQT, onts.MAC_ONT as DIR_MAC, onts.MOD_ONT as MODELO, onts.IP_ONT as DIR_IP, ctrlont.VLAN_ID as VLAN, ctrlont.FOLIO '); SQL.Add('FROM CTRLONT '); SQL.Add('INNER JOIN clientes ON ctrlont.FOLIO = clientes.FOLIO '); SQL.Add('INNER JOIN onts ON ctrlont.FOLIO = onts.FOLIO '); SQL.Add('ORDER BY ctrlont.INDEX_ID ASC '); Open; Active:= True; end;
Mi detalle como ya mencioné es que el campo ctrlont.FECHA_ALTA o ctrlont.FECHA_SUSPEN al exportarla, ALGUNAS me aparecen en otro tipo de presentación de formato.