FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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á :) |
#2
|
||||
|
||||
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 |
#3
|
|||
|
|||
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á :) |
#4
|
||||
|
||||
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). |
#5
|
||||
|
||||
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). |
#6
|
||||
|
||||
¿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 |
#7
|
|||
|
|||
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á :) |
#8
|
||||
|
||||
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). |
#9
|
||||
|
||||
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). |
#10
|
|||
|
|||
Hola,
Parece una buena idea, pero ¿eso como lo hago? Muchas gracias Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :) |
#11
|
||||
|
||||
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). |
#12
|
|||
|
|||
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 |
#13
|
|||
|
|||
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á :) |
#14
|
||||
|
||||
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; Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#15
|
|||
|
|||
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á :) |
#16
|
|||
|
|||
ME gustan los TDate , TDateTime y los TTime, asi es que todo el proceso lo hago teniendo en cuenta esos señores.
Saludos Fer |
|
|
|