Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   tipo date (https://www.clubdelphi.com/foros/showthread.php?t=50227)

jSr 12-11-2007 16:48:09

tipo date
 
Muy buenas:

Alguien sabe como puedo configurar en MySql para que el formato de Fecha sea distinto, supongo que seria solo cambiar la variable de fecha a 'dd/mm/yyyy' en vez de 'yyyy-mm-dd'

muchas gracias

enecumene 12-11-2007 17:08:23

Hola, mysql por defecto trae el formato de fecha yyyy-MM-dd, por mas que intentes insertar en otros formatos automaticamente mysql lo pone en su formato por defecto que es yyyy-MM-dd, ahora en cuanto a mostrar los datos en cierto formato, es posible de la siguiente manera:

Código SQL [-]
SELECT *, DATEFORMAT(campo_fecha, '%d/%m/%Y') AS Fecha_str  FROM tbl_algo

espero que te ayude.

Saludos.

jSr 12-11-2007 17:19:42

Muy bien
 
Gracias,

mi problema no es la forma en que enseña los datos, el problema es que cuando quiero grabar el campo de un query a la base de datos al hacer applyupdates me da error en ese campo.

Estoy usando delphi y cada tabla que tiene campo de date al hacer el applyupdate me da el error.

Sabrias tu como solucionar ese problema desde delphi?

Gracias

enecumene 12-11-2007 17:23:31

Pues, podrias postear el error que te da?, porque mysql no admite formatos dd/MM/yyyy, sino, yyyy-MM-dd.

Saludos.

Al González 12-11-2007 23:24:05

No es tanto que admita o no admita, sino que el formato "universal" de fechas en bases de datos cliente-servidor es el ISO: aaaa-mm-dd (año-mes-día).

Y es el recomendable para cuando se quiere expresar de manera literal una fecha en una sentencia SQL decente.

Una forma de no lidiar con este tipo de problemas es hacer que el componente consulta (query) tenga parámetros para simplemente asignarles las fechas al estilo "ParamByName ('Fecha').AsDate := MiFechaTDate;".

Si se quiere expresar alguna fecha en particular de forma literal, lo mejor será hacerlo siempre bajo el formato ISO mencionado.

Saludos.

Al González. :)

jSr 13-11-2007 08:32:42

Tipo Date
 
Hola:

Antes que nada deciros que conozco otras bases de datos y este formato esta lejos de ser el mas estandar de todos, normalmente tienen el formato ingles que es mm/dd/yyyy, pero bueno, ese no es el punto.

El problema es en DELPHI y es el siguiente: cuando declaro un TQuery para hacer referencia a una tabla y su correspondiente UpdateSQL, si grabo las transacciones con la propiedad RequestLive a True no me da problemas. Cuando RequestLive esta a false y cachepupdates a True es cuando me da problemas, por alguna razon al hacer el applyupdates me da el error de "...OPERATION NOT APPLICABLE..." ese es el problema. Con TTables tambien funciona todo bien. Como mi aplicacion ya esta terminada 100% y lo unico que haremos es migrar entonces no quiero cambiar la metodologia que se usa en el sistema.

En definitivas, no puedo hacer un applyupdates en tablas que tengan campos fechas (si estos campos son modificados).

Muchas gracias

Al González 13-11-2007 16:39:50

¡Hola!

Bases de datos cliente-servidor, y claro, la mayoría acepta también el formato mm/dd/aaaa, pero no por ello rechazan el estándar ISO, el cual, repito, es preferible usar. Lamento contradecirte pero no está nada lejos de ser el estándar, Firebird y SQL Server lo admiten perfectamente y estoy seguro que la mayoría de las bases de datos cliente-servidor también.

Aclarado ese punto, creo que no nos has dicho qué componentes estás utilizando para el acceso a los datos. Tal vez en ellos, o en la forma de emplearlos esté el problema. ¿Podrías mostrarnos algo de tu código?

Saludos.

Al González. :)

jSr 14-11-2007 08:36:57

Problema
 
Al: no sabia que estaban estandarizando lo de la fecha, pero lo que te dije, en los años que llevo en esto y en las bd que toque eran otras las caracteristicas de fecha. tendre que mantenerme mas al dia.

Por este tipo de cosas es bueno entrar a los foros, jejeje

bueno mira, te describo el problema que lo puse tambien en otro topico en conexiones.

Ojo, el error da solo cuando se graba con cacheupdates en delphi, cuando el query es requeslive no pasa eso y cuando se usan ttables tampoco, es con tquerys con la propiedad cachedupdates =true.

Tengo un DM donde declaro una DataBase conectado a un alias en el ODBC. Aparentemente esta todo bien.

Ademas cuento con un tQuery con una select sencilla sobre una de las tablas, este query esta conectado a un updateSQL que contiene las sentencias de Insert/modify/delete.

En el mismo DM esta definida una funcion que recibe como argumento un TDataSet:

Código Delphi [-]
procedure  Tdm.Grabar(DataSet: TDataSet);
begin
inherited;
with (DataSet As  TQuery) do begin
if not Database.InTransaction  then
Database.StartTransaction;
try
ApplyUpdates;
database.Commit;
except
database.Rollback;
raise;
end;
CommitUpdates;
end;
end;

Cuando el tQuery tiene la propiedad requestLive a True (el codigo de arriba comentado), los cambios son grabados correctamente en la BD.

Pero cuando utilizo el codigo de arriba, y configuro en el TQuery la propiedad cachepUpdates a TRUE; y la propiedad requestLive a FALSE, al ejecutar la Linea "ApplyUpdates" me da un error de "...EDBEngineError with message 'Operation not applicable'..."

Con las TTables tampoco da error, pero no se por donde atacar el problema.

he probado todo lo que la experiencia me ha dicho que puede ser pero igual se me escapa algun detalle. Sospecho que pueden ser dos cosas:

1- La configuracion de ODBC
2- La configuracion del Servidor de MySQL Server.

Alguno tiene alguna idea o tuvo el mismo problema?

El Problema real son los campos de tipo DATE en MySql que tienen definido en una variable el formato 'YYYY-MM-DD', la solucion probablemente sea cambiar el formato de esa variable en MySql de manera que Delphi pueda aceptar esos datos.

por otro lado el delphi no me permite introducir otro formato de fecha que no sea 'dd/mm/yyyy' y ahi es donde me da el Error 'Operation not applicable'



PD: No quisiera utilizar otros componentes que los mencionados arriba, porque la aplicacion esta ya terminada y solamente queremos migrarla de Paradox.

Muchas Gracias


La franja horaria es GMT +2. Ahora son las 14:42:38.

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