Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-06-2019
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 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
  #2  
Antiguo 28-06-2019
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Hola


A me parece que bastaria con:



Código Delphi [-]
var
 F:TDateField;

begin
F:=Datos.DatosDM.CabeceraADOQuery.FieldByName('Fecha')as TDateField;
F.DisplayFormat:='dd/mm/yyyy';


Seria cuestion de probar.

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #3  
Antiguo 28-06-2019
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 20
javicho_villa Va por buen camino
Smile Muchas gracias Caminante

ante todo gracias por tomarse el tiempo en leer y ayudarme.

lo he probado en BeforeOpen pero da error
Código Delphi [-]
procedure TGuiaForm.CabeceraADOQueryBeforeOpen(DataSet: TDataSet);
var F:TDateField;
begin
    F:=Datos.DatosDM.CabeceraADOQuery.FieldByName('Fecha')as TDateField;
    F.DisplayFormat:='dd/mm/yyyy';
  //TDateTimeField(CabeceraADOQueryFecha.Value).DisplayFormat := 'DD/MM/YYYY';
  //TDateField(self.CabeceraADOQueryFecha).DisplayFormat := 'DD/MM/YYYY'
  //(CabeceraADOQuery.FieldByName('Fecha') as TDateTimeField).DisplayFormat := 'DD/MM/YYYY';
end;

Tambien lo probe en un evento de un boton donde inicializo el query pero tambien sale error: CabeceraAdoQuery: Field 'Fecha' not found, este error sale en los dos eventos.

Código Delphi [-]
  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';
    F:=Datos.DatosDM.CabeceraADOQuery.FieldByName('Fecha')as TDateField;
    F.DisplayFormat:='dd/mm/yyyy';
__________________
Javier Villa Sánchez
jvilla@andreaproducciones.com

Última edición por javicho_villa fecha: 28-06-2019 a las 22:15:08.
Responder Con Cita
  #4  
Antiguo 29-06-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código:
Close;
SQL.Clear;
SQL.Add(Cad);
ExecSQL;
Active := true;
Last;
También ten en cuenta que eso está mal y será más o menos así:
Código Delphi [-]
Close;
SQL.Text:=Cad; // asignas el select
Open;  // open, porque será un select. (execsql es para ejecutar insert, delete, update)
Last;  // vas al último registro
Responder Con Cita
  #5  
Antiguo 29-06-2019
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Hola


Cita:
Empezado por javicho_villa Ver Mensaje
tambien sale error: CabeceraAdoQuery: Field 'Fecha' not found, este error sale en los dos eventos.

Segun el mensaje de error el problema es que no encuentra el campo indicado. Seria cuestion de verificar el SQL que envias.
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #6  
Antiguo 30-06-2019
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 20
javicho_villa Va por buen camino
Muchas gracias por las respuestas, el query es un (select * from Pedido) si muestra la fecha y todos los campos en el dbgrid,
pero en un formato que no deseo, he intentado todo lo que menciono anteriomente pero nose porque no puedo modificar el formato de fecha en el dbgrid.
__________________
Javier Villa Sánchez
jvilla@andreaproducciones.com
Responder Con Cita
  #7  
Antiguo 30-06-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues si no hace caso del formato, no reconoce el campo, etc. es porque el dbgrid tiene asignado otro datasource distinto al que corresponde.
Responder Con Cita
  #8  
Antiguo 01-07-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
y si el fomato del campo lo actualizas en las propiedades del mismo campo?
en el displayformat del campo del dataset purdes colocar dd/mm/yyyy y listo
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #9  
Antiguo 01-07-2019
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 20
javicho_villa Va por buen camino
Unhappy

Muchas gracias por sus respuestas.
Lamentablemente sigo con el problema, me es raro, lo que hice, es poner un AdoQuery, un DataSource en forma local dentro del formulario, y me aparace todos los datos, puedo cambiar parcialmente el formato de numero, pero el de fechas nose por que no lo puedo cambiar por nada del mundo.
Agregue todos los campos en el AdoQuery, para tener la esperanza de que en el campo Fecha del Query salga el DisplayFormat, pero no aparece y siempre trato jalar esa propiedad con el TDateTimeField, pero sin éxito.
Estos errores sacan de quicio por que deberían ser fáciles pero hay algo mal que estoy haciendo y no me doy cuenta, si me pueden ayudar por favor se los voy agradecer infinitamente.
__________________
Javier Villa Sánchez
jvilla@andreaproducciones.com
Responder Con Cita
  #10  
Antiguo 01-07-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Se supone que la fecha es un campo fecha en la base de datos, ¿no?
Responder Con Cita
  #11  
Antiguo 01-07-2019
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 20
javicho_villa Va por buen camino
Así es, estoy trabajando con SQL, y si se visualiza la fecha pero en el formato año-mes-día, lo que quiero es cambiarlo al formato día/mes /año
__________________
Javier Villa Sánchez
jvilla@andreaproducciones.com
Responder Con Cita
  #12  
Antiguo 01-07-2019
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Otra opcion es usar el evento OnGetText del campo en cuestion


Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #13  
Antiguo 01-07-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por javicho_villa Ver Mensaje
Muchas gracias por sus respuestas.
Lamentablemente sigo con el problema, me es raro, lo que hice, es poner un AdoQuery, un DataSource en forma local dentro del formulario, y me aparace todos los datos, puedo cambiar parcialmente el formato de numero, pero el de fechas nose por que no lo puedo cambiar por nada del mundo.
Agregue todos los campos en el AdoQuery, para tener la esperanza de que en el campo Fecha del Query salga el DisplayFormat, pero no aparece y siempre trato jalar esa propiedad con el TDateTimeField, pero sin éxito.
Estos errores sacan de quicio por que deberían ser fáciles pero hay algo mal que estoy haciendo y no me doy cuenta, si me pueden ayudar por favor se los voy agradecer infinitamente.
estas seguro que es un campo fecha?
puedes colocar una foto de la estructura de los campos?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #14  
Antiguo 01-07-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Se supone que la fecha es un campo fecha en la base de datos, ¿no?
Cita:
Empezado por oscarac Ver Mensaje
estas seguro que es un campo fecha?
puedes colocar una foto de la estructura de los campos?



Cita:
Empezado por javicho_villa Ver Mensaje
Así es, estoy trabajando con SQL, y si se visualiza la fecha pero en el formato año-mes-día, lo que quiero es cambiarlo al formato día/mes /año
No es lo que hemos preguntado
Responder Con Cita
  #15  
Antiguo 01-07-2019
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 20
javicho_villa Va por buen camino
Muchas gracias por ayudarme, les adjunto una imagen con la imagen del dbgrid como se muestra y la estructura de la tabla.
Imágenes Adjuntas
Tipo de Archivo: png EstructuraGuia2.png (29,9 KB, 15 visitas)
__________________
Javier Villa Sánchez
jvilla@andreaproducciones.com
Responder Con Cita
  #16  
Antiguo 01-07-2019
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 20
javicho_villa Va por buen camino
Red face

Les paso la estructura en sql

Código SQL [-]
USE [Textil]
GO

/****** Object:  Table [dbo].[Guia]    Script Date: 01/07/2019 12:26:36  ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Guia](
  [Id_Guia] [int] NOT NULL,
  [Id_Cliente] [int] NULL,
  [Id_ClienteTerceroTransporte] [int] NULL,
  [Id_ClienteTerceroProveedor] [int] NULL,
  [Id_Venta] [int] NULL,
  [Id_Pedido] [int] NULL,
  [Id_Parametro_TipoDoc] [int] NULL,
  [Id_Parametro_Motivo] [int] NULL,
  [NumeroDoc] [varchar](20) NULL,
  [Serie] [varchar](6) NULL,
  [Numero] [int] NULL,
  [Fecha] [date] NULL,
  [Destinatario] [varchar](100) NULL,
  [Direccion] [varchar](100) NULL,
  [DomicilioDestino] [varchar](100) NULL,
  [DomicilioPartida] [varchar](100) NULL,
  [Marca] [varchar](20) NULL,
  [Placa] [varchar](10) NULL,
  [Otros] [varchar](100) NULL,
  [OrdenCompra] [varchar](50) NULL,
  [Observaciones] [varchar](50) NULL,
  [Cliente] [bit] NULL,
  [Facturado] [bit] NULL,
  [Id_Usuario] [int] NULL,
  [FRegistro] [date] NULL,
 CONSTRAINT [PK_Guia] PRIMARY KEY CLUSTERED 
(
  [Id_Guia] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
__________________
Javier Villa Sánchez
jvilla@andreaproducciones.com
Responder Con Cita
  #17  
Antiguo 01-07-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
que raro

si el campo es fecha, jalandolo con .asdatetime es suficiente
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #18  
Antiguo 08-10-2019
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 20
javicho_villa Va por buen camino
Thumbs up Problema Resuelto

Después de mucho tiempo, me puse a tratar de solucionar este viejo problema y encontré la solución:

1. Tienes que agregar en el componente AdoQuery los Campos que vas a utilizar, en este caso en el campo fecha, dentro del evento OnGetText puse el siguiente código:

Código Delphi [-]
procedure TKardexForm.CabeceraADOQueryFechaGetText(Sender: TField;
  var Text: string; DisplayText: Boolean);
begin
 Text := FormatDateTime('dd/mm/yyyy', VarToDateTime(CabeceraADOQuery.FieldByName('Fecha').AsVariant));
end;

y funciono muy bien, muchas gracias a todos ustedes por tomarse la molestia de ayudarme me dieron la ruta para solucionar este pequeño problema.
saludos a todos.
__________________
Javier Villa Sánchez
jvilla@andreaproducciones.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Exportar un DBGRID a excel con formato de fecha Luis Castro Varios 3 21-01-2011 21:54:38
obtener solo la fecha en formato fecha y sin hora BlueSteel SQL 14 09-05-2008 16:42:19
conversion de fecha texto a fecha formato date shinyi OOP 3 17-12-2007 20:19:49
Como cambiar el formato de un QRSysData en formato fecha Bitbanner Tablas planas 1 13-02-2005 12:33:26
Formato Fecha en DbGrid IceJamp OOP 4 28-09-2004 13:22:42


La franja horaria es GMT +2. Ahora son las 13:52:39.


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
Copyright 1996-2007 Club Delphi