Foros Club Delphi

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

WaRRanT 12-03-2004 19:43:47

Campo DATA
 
Ola pessoal,

Boa tarde,

Gostaria de esclarecer uma dúvida.

Eu converti uma tabela do PARADOX para o MySQL, so que ha um problema num campo tipo DATE. Na nova tabla (MySQL) o campo "DATE" esta com valores irreais como por exemplo:

"2028-04-20"
"2023-04-20"
"2025-04-20"

Etc...

Por que está ocorrendo isto?

Gracias,

Abraços para todos,

WaRRanT

roman 12-03-2004 20:00:34

El problema puede tener su origen en el hecho de que MySql y Paradox manejan distintos formatos de fecha. En MySql el formato es yyyy-mm-dd mientras que en Paradox es mm/dd/yyyy de manera que de alguna forma tendrás que ocuparte de la conversión.

// Saludos

WaRRanT 12-03-2004 20:09:34

E como eu poderia resolver isso?

roman 12-03-2004 20:25:55

¿Cómo estás exportando las tablas?

Lo que algunas veces he hecho es generar una tabla en paradox para hacer un "casting" y convertir el campo al formato adecuado. Tendrías que usar la función CAST para pasar de DATE a CHAR:

CAST(fecha as CHAR(10))

La función SUBSTRING para separar los elementos de la fecha:

SUBSTRING(campo from 1 for 2) - month
SUBSTRING(campo from 4 for 2) - day
SUBSTRING(campo from 7 for 4) - year

y volver a juntarlos con el formato adecuado:

year + '-' + month + '-' + day

// Saludos

WaRRanT 12-03-2004 20:38:48

Roman,

Eu estou convertendo pelo DATAPUMP.

Instalei o MyODBC e criei um alias definindo pra onde as tablas serão convertidas e o tipo.

roman 12-03-2004 21:24:28

Acabo de instalar myodbc pero aclaro que no tengo mucha idea de esto.

Traté de usar datapump y no sólo no obtuve fechas correctas sino que ¡no obtuve fecha alguna!

Sin embargo, hice una prueba rápida con Delphi:

Código:

{
  TablaMysql - componente Table conectada al alias odbc
  TablaParadox - componente Table conectada al alias paradox
}
while not TablaParadox.Eof do
begin
  TablaMySql.Append;
  TablaMySql['fecha'] := TablaParadox['fecha'];
 
  { otros campos }

  TablaParadox.Next;
end;

y funcionó a la perfección.

Conclusión: no sé usar odbc con datapump o datapump no es bueno

Si te fijas, al menos en mi caso, cuando miras la tabla de conversión de campos en datapump ni siquiera te permite escoger el tipo date del lado de mysql.

// Saludos

WaRRanT 12-03-2004 21:33:28

Roman,

O formato de data da minha tabla PARADOX não está MM-DD-YYYY, e sim DD-MM-YYYY

roman 12-03-2004 21:44:21

Tienes razón, estaba confundido. El que indicas es también el formato que yo tengo. Aún así, como ves de mi anterior mensaje, pude hacer la exportación.

// Saludos

WaRRanT 12-03-2004 21:46:31

Roman,

Que significa "fecha"?

roman 12-03-2004 21:47:46

fecha = date

es sólo el nombre de un campo de tipo DATE

// Saludos

WaRRanT 12-03-2004 21:54:35

Roman,

Ok...

Então deixe-me ver se entendi.

Eu pego a tabla PARADOX e mudo o tipo do campo de DATE para CHAR. E então eu implemento o codigo que você postou acima? Assim?

Gracias,

WaRRanT

roman 12-03-2004 22:00:06

Cita:

Empezado por WaRRanT
Eu pego a tabla PARADOX e mudo o tipo do campo de DATE para CHAR. E então eu implemento o codigo que você postou acima? Assim?

No.

Al salir el tema de odbc lo del CHAR pasó a la historia :)

Simplemente creas una tabla en mysql con la estructura similar a la tabla de paradox y luego usas el código adaptándolo a los campos que tenga tu tabla.

No hay necesidad de cambiar los tipos de datos- al menos en lo que a DATE se refiere, aunque no creo que otros tipos de datos te den problemas.

// Saludos

WaRRanT 13-03-2004 15:13:22

Amigo Roman,

A funcion que voce me passou funcionou perfeitamente!! Gracias!! :)

Agora em consequencia da mudança do campo data está dando uma problema com uma sentença no Delphi. Vou postar em OFF aqui no foro de MySQL. Desculpe-me se isso es contra as regras do forum. :rolleyes:

"empresa:=BdGlobal.QyEmpresaCodigo.Value;
data:= Strtodate(DbEdit2.text);
If not QyDiario.Locate('Empresa;Data',VarArrayOf([empresa, data]),[loCaseInsensitive]) then
"

Quando é executado esta retornando o erro "INVALID VARIANT TYPE CONVERSION"

Ja tentei varias coisas e nao sei porque se passa este erro...


Gracias,

Abraços para todos!

WaRRanT


La franja horaria es GMT +2. Ahora son las 21:18:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi