Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
campos time/timestamp

Hola,

Estoy pasando paradox 5 a interbase 7.
Tengo un "problema" con un campo timestamp.

Sólo puedo pasar de paradox a interbase 7 en dialecto 1, de modo que en este campo, paso de tener sólo horas a tener 01.01.3000 y la hora. El problema es que yo quiero tener sólo la hora, y aunque luego lo pase a interbase 3, y le diga que me cambie el campo a tipo TIME, la verdad es que me deja este valor tal cual.

Hay alguna manera de pasar desde paradox 5 el tìpo time, que sólo tiene horas a interbase 7, dialecto 3 con también Sólo horas?


Gracias a todos,
Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #2  
Antiguo 21-11-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Hola virginia. Porque solo podes pasarla en dialecto 1, que te impide hacerlo directamente en dialecto 3?.

De cualquier forma, podes dejar la info en un campo temporal de tipo TimeStamp (Date en dialecto 1) y luego, con un stored procedure o desde el mismo delphi, extraer la información de la hora y pasarlo al campo definitivo de tipo Time.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 25-11-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Hola,

HE intentado pasar las tablas de paradox 5 a interbase 7 de varias maneras. De las dos únicas maneras que lo he conseguido, tiene que ser estando interbase en dialecto1, no me lo acepta en dialecto 3.

La primera forma es directamente en el paradox, usando copy sobre cada una de las tablas de mi base de datos paradox que quiero pasar a interbase. Para ello tengo que tener definido un alias en el BDE Administrator tanto para la base de datos paradox como para la de interbase.
Este método funciona, como ya he dicho, para pasar a una tabla de interbase que este en dialecto1, siempre que no tenga algún campo o tipo de campo que no le guste al paradox.

En este caso, si en el campo, HORA, sólo guardaba horas, en interbase, en el campo HORA, tengo 01.01.3000 delante de la hora que sea.

De modo que, al pasar esta base de datos a dialecto3, este dato se que da así, aunque defina el campo hora como TIME.

En algunos casos, estas copiando las tablas de paradox a interbase y si te da problemas el resultado es que directamente te borra la tabla de interbase en la que estás copiando la tabla paradox.

LA otra forma que me "funciona" es utilizando el programa BDE\datapump.exe, el cual me permite, seleccionar la base de datos origen, después la de destino, (ambas tienen que tener un alias vinculado en el bde Administrator), y después decirle que tablas quiero pasar de una bd a otra.

Lo malo es que si tiene datos la tabla destino, algunas veces no hace traspaso de datos. Otras veces no te deja por que, por ejemplo, no le gusta que le digas que para los float utilice numeric(15, 2).


Finalmente, para pasar las tablas de paradox a interbase tengo que usar una mezcla de las dos formas, para entre las dos obtener la copia de toda la tabla.


He intentado utilizar, como me habeis indicado en alguna ocasión el Programa, Interbase DataPump. Pero con este programa no llego ni a la fase de "get definitions", lo haga como lo haga, me da error, y no llego a acceder a esta fase del proceso.

He tratado de documentarme al respecto de estos programas, y de estos pasos, pero la documentación que encuentro al respecto, deja mucho que desear.

Yo entiendo que esto tiene que tener solución. Tiene que haber mucha más gente en el mundo que haya tenido que hacer esto mismo, no creo ser la primera en necesitar hacer este cambio de base de datos teniendo en cuenta que necesito que me conserve horas, SOLO horas, donde antes tenía horas.

Si alguien me pudiera ayudar al respecto, le quedaría muy agradecida.

Muchas gracias,

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #4  
Antiguo 25-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Prueba el programa IBDataPump, es muy bueno. Existe tanto como una aplicación independiente, como un plugin de IBExpert (herramienta de Administración de Interbase con una versión Personal gratuita).

http://www.clevercomponents.com/prod...ibdatapump.asp

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 25-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Ya veo que lo has probado.

Asegúrate de que tienes la ultima versión (a mi siempre me ha funcionado muy bien), y que estableces bien la cadena de conexión.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 25-11-2003
Avatar de Voutarks
Voutarks Voutarks is offline
Miembro
 
Registrado: jul 2003
Ubicación: Islas Canarias
Posts: 118
Poder: 21
Voutarks Va por buen camino
¿Y que tal el sql2gdb?

En principio es para pasar de access a interbase, pero tambien sirve para paradox o para cualquier base de datos siempre que tenga controladores ole db o si no odbc que cualquier base de datos los tiene.

Yo pase una base de datos de access a firebird dialecto 3 y fue todo muy bien. Los campos que utilizaba en access para almacenar cantidades monetarias, los cuales tenía definido como tipo moneda se pasaron con cuatro decimales, como tu indicas, pero eso es porque el tipo moneda de access almacena los datos con cuatro decimales. Luego una vez que la base de datos es firebird/interbase hace una conversión del campo para que tenga 2 decimales y los datos se redondean bien, quedando el resultado deseado.

El programa sql2gdb se puede descargar de:
http://www.ibphoenix.com/a436.htm?a=...x&page=sql2gdb
__________________
Emilio J. Curbelo
Responder Con Cita
  #7  
Antiguo 09-12-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Hola,


Gracias a los dos, he estado probando lo que me decis, debo de estar haciendo algo mal, tal vez, efectivamente no estoy estableciendo bien la cadena de conexión. el problema es que la documentación que tengo al respecto no me permite saber si esto es así, en que me estoy confundiendo.

La configuración que tengo es:

SourceDataBAse: BDE Source
SourceDB mi alias de la tabla de paradox
user name and password : las de la tabla

Convert bolean checked
select Option: Select * "a Table"
quote: checked

de hecho pasa el test conection

PAra interbase tengo directamente el directorio donde está la tabla, login password correspondiente, si la base de datos con la que pruebo es la que tengo en dialecto 3 pongo dialecto 3, de lo contrario pongo dialecto1.

En cualquier caso, pasa también el text de conection.

el problema es cuando, una ez hecho esto me paso a la pestaña Step 2, y pulso el botón Get definitions.

He probado cambiando cosas de build SQL script, pero no cambia nada la cosa.

Alguna idea?

Saludos,

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #8  
Antiguo 09-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

No utilizes una conexión de tipo BDE. En lugar de especificar BDE source, utiliza Interbase/Firebird Source.

Si no recuerdo mal, BDE solo podia utilizar el Dialecto 1, el cual no tiene campos Timestamp.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #9  
Antiguo 09-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Olvídalo, veo que no haces la conexión a Firebird con BDE, sinó la conexión con Paradox.

El problema parece estar con el Paradox, ¿ porqué no pruebas a conectar con Paradox por ADO ?

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #10  
Antiguo 10-12-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Hola,

Parece una buena idea, pero ¿eso como lo hago?

Muchas gracias

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #11  
Antiguo 10-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Prueba a definir una conexión ODBC a la base de datos Paradox. (Tienes que entar en el Panel de Control, Herramientas Administrativas, Orígenes de Datos ODBC), y crear una nueva entrada en la pestaña DSN de sistema, utilizando el controlador para Paradox.

Una vez definido el DSN de Sistema, vas al IB DataPump, estableces el origen de tipo ADO, y al construir la cadena de conexión, especifica que quieres utilizar el Microsoft OleDB Provider para ODBC Drivers. Ahora ya solo te queda indicar el DSN a utilizar, en la siguiente pestaña.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #12  
Antiguo 11-12-2003
buitrago buitrago is offline
Miembro
 
Registrado: sep 2003
Posts: 156
Poder: 21
buitrago Va por buen camino
Cuántas tablas son?

Ummm, sé que la solución es un poco "macarronica", pero cundo a mi este tipo de trabajos se me hacen muy tediosos, lo que hago es que planteo las dos connecciones desde Delphi y hago un ciclo...........y resulto el probleam, lo hago por programación......

Saludos

Fer
Responder Con Cita
  #13  
Antiguo 15-12-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Post

Hola,

Probaré lo que me decis. Por cierto, como haces, para temas de fechas ese ciclo desde delphi? vamos, que a que te refieres con un ciclo en delphi? ¿un bucle que te recorre toda la tabla, supongo, pero ¿haciendo que?

Gracias a los dos,

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #14  
Antiguo 15-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Haces un bucle recorriendo todos los registros en Paradox, y insertandolos en IB.

Personalmente suelo utilizar un Query parametrizado para hacer las inserciones.

Pones un IBQuery : INSERT INTO TABLA (CAMPO1, CAMPO2) VALUES (:CAMPO1, :CAMPO2)

Entonces el bucle es más o menos :

Código:
dsParadox.First;
while not dsParadox.Eof do begin
  IbQuery.Params.ParamValues['CAMPO1'] := dsParadox.FieldValues['CAMPO1'];
  IbQuery.Params.ParamValues['CAMPO2'] := dsParadox.FieldValues['CAMPO2'];
  IbQuery.ExecSql;
  dsParadox.Next;
end;
Lo bueno de utilizar parámetros es que te olvidas del formato de los números, fechas, etc .... Simplemente le pasas un TDateTime, y el componente ya formaterá correctamente la instrucción INSERT

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #15  
Antiguo 16-12-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Muchas gracias,

Creo que me voy a crear un programita que me pase los datos, con este código, creo que va a ser lo más práctico.

Gracias, de nuevo,

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita
  #16  
Antiguo 16-12-2003
buitrago buitrago is offline
Miembro
 
Registrado: sep 2003
Posts: 156
Poder: 21
buitrago Va por buen camino
ME gustan los TDate , TDateTime y los TTime, asi es que todo el proceso lo hago teniendo en cuenta esos señores.

Saludos

Fer
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 11:29:33.


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