Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Muchas gracias maeyanes, lo voy a probar y comento los resultados.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #2  
Antiguo 30-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Bueno pues muchas gracias maeyanes, las tablas fueron creadas perfectamente.

Ahora les voy a comentar el porque de esto, resulta que como soy muy flojo, como dirian por aqui algunos "soy un vago", estoy migrando los sistemas que tengo de Paradox a Firebird, pero (como siempre hay un pero), me da flojera estar creando las tablas desde el IBExpert.

Por tal razón me puse a la tarea de crear un programita para migrar las definiciones de las tablas sin tener que escribir nada, es decir, solo selecciono el Alias que quiero migrar y el sistema me genera el script de la base.

Una vez que el script está generado, con un simple click creo la base de datos en Firebird y las tablas.

Aquí les pego el código fuente para quien le interese y también al igual que yo le de flojera esta migración.

Hay algunos detalles que no se como atacarlos, por ejemplo, los campos Blob o Memo de paradox, no se su correspondencia en Firebird, de igual forma no he puesto todos los tipos de datos, solo incluí los digamos tipos estandard.

Se que por aqui habrá quien le de su toque maestro y espero que éste se vea favorecido por sus aportaciones.

Edito: Hay un bug, pero es por la razón que les comenté, no he incluido todos los tipos de datos, por lo tanto, les puede enviar un error cuando el último campo de la tabla es de un tipo NO incluido.

Otra cosa, aun me falta asignar las llaves, los campos NOT NULL, pero estoy trabajando en eso.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 30-03-2007 a las 00:59:05.
Responder Con Cita
  #3  
Antiguo 30-03-2007
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 24
Manuel Va por buen camino
Esto te puede servir

Código SQL [-]
        tabla := 'T12345';
        Query6.Close;
        Query6.SQL.Clear;
        Query6.SQL.Add('CREATE TABLE '+tabla+'(');
        Query6.SQL.Add('CODIGO DOUBLE PRECISION NOT NULL,');
        Query6.SQL.Add('nota SMALLINT,');
        Query6.SQL.Add('INSUFICIENTE SMALLINT,');
        Query6.SQL.Add('SUFICIENTE SMALLINT,');
        Query6.SQL.Add('BUENO SMALLINT,');
        Query6.SQL.Add('MUYBUENO SMALLINT,');
        Query6.SQL.Add('total SMALLINT,');
        Query6.SQL.Add('PROMEDIO DOUBLE PRECISION)');
        Query6.ExecSQL;

lo puedes hacer para los para las llaves, etc.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #4  
Antiguo 30-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Gracias por tu comentario Manuel.

Pues yo sigo con el tema, hubo unos cambios en el programita, cambie el TQuery por un TTable para poder encontrar los índices, en este primer cambio ya logre ingresar el primer índice y funciona bien, sigo aún con el bug de los campos NO incluidos, pero quise primero ver lo de los índices.

En esta parte solo se crea el índice pero no la llave primaria, sigo buscando información para poder lograrlo.

Aquí pueden bajar el código fuente.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 30-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Sigo tratando de mejorar el programa y debo pedirles una disculpa a los que ya hayan bajado el mismo porque no lo habia subido completo.

Aqui la última versión la cual ya genera las llaves primarias.

Espero les guste y sobre todo que les sea de utilidad.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 30-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hola egostar.
Si queres puedes subir el código fuente al FTP público; No he querido hacerlo yo, por si tienes algun inconveniente.
Lo digo porque así seguro que "perdura" más tiempo y lo tenemos más accesible si más adelante queremos buscarlo.

Gracias por el código.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 30-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Un detalle, no uses double precision, usa NUMERIC(10,2) para campos monetarios en Dialecto 3, o tendrás problemas de redondeos y verás que guarda valores que no se corresponden con los introducidos.

Me ha extrañado que al ser un campo indexado, añadas la restricción NOT NULL, eso más bien sería si el campo es obligatorio (Required) ¿no?. Bueno, quizás tú lo necesites así.

Por lo demás me parece fantastico el código.

Si se puede aportar algo... así puedes saber cual es la clave primaria y crear los índices.
Código Delphi [-]
 with Table1.IndexDefs[i] do
        begin
          if ixPrimary in Options then
            Opc:= Opc + 'ixPrimary ';
          if ixUnique in Options then
            Opc:= Opc + 'ixUnique ';
          if ixDescending in Options then
            Opc:= Opc + 'ixDescending ';
          if  ixCaseInsensitive in Options then
            Opc:= Opc + 'ixCaseInsensitive ';
          if  ixExpression in Options then
            Opc:= Opc + 'ixExpression ';
          if  ixNonMaintained in Options then
            Opc:= Opc + 'ixNonMaintained ';

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 30-03-2007 a las 14:23:27.
Responder Con Cita
  #8  
Antiguo 30-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por Neftali
Hola egostar.
Si queres puedes subir el código fuente al FTP público; No he querido hacerlo yo, por si tienes algun inconveniente.
Lo digo porque así seguro que "perdura" más tiempo y lo tenemos más accesible si más adelante queremos buscarlo.

Gracias por el código.
Muchas gracias Neftali, lo haré la siguiente vez, aún estoy haciendo modificaciones.

Cita:
Empezado por Lepe
Un detalle, no uses double precision, usa NUMERIC(10,2) para campos monetarios en Dialecto 3, o tendrás problemas de redondeos y verás que guarda valores que no se corresponden con los introducidos.
Gracias, así lo haré.

Cita:
Empezado por Lepe
Me ha extrañado que al ser un campo indexado, añadas la restricción NOT NULL, eso más bien sería si el campo es obligatorio (Required) ¿no?. Bueno, quizás tú lo necesites así.
Si yo no le pongo el NOT NULL no me permite crear la llave primaria, da error al tratar de generarla si no lo tiene.

Cita:
Si se puede aportar algo... así puedes saber cual es la clave primaria y crear los índices.
Muchas gracias, lo voy a incluir ahora mismo.

Cita:
Empezado por Manuel
Otro pequeño aporte:
Gracias Manuel, eso mismo estoy haciendo, en lugar de usar el ALTER TABLE, usar el CONSTRAINT.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 30-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 22
basti Va por buen camino
Cita:
Empezado por egostar

Hay algunos detalles que no se como atacarlos, por ejemplo, los campos Blob o Memo de paradox, no se su correspondencia en Firebird, de igual forma no he puesto todos los tipos de datos, solo incluí los digamos tipos estandard.
Salud OS.
El tipo memo de Paradox se corresponde con blob sub_type 1 en firebird, el resto de los tipos blob (Graphic, OLE, etc.) son blob sub_type 0.
Responder Con Cita
  #10  
Antiguo 30-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por basti
El tipo memo de Paradox se corresponde con blob sub_type 1 en firebird, el resto de los tipos blob (Graphic, OLE, etc.) son blob sub_type 0.
Muchas gracias basti, ahora mismo lo pruebo.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #11  
Antiguo 30-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Ya he conseguido incluir las mejoras que amablemente me han dejado saber.

Ahora y tomandole la palabra a Neftali, quiero subir el programa al FTP de Club Delphi, pero tengo una pregunta, como es un programa que aún creo le faltan muchas mejoras, al subirlo al FTP, ¿puedo sobreescribirlo con las últimos cambios posteriormente? o se agrega uno cada vez que lo subo (por supuesto que lo haría con el mismo nombre).

Salud OS y gracias.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #12  
Antiguo 30-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Bueno, pues he alojado el programa en el FTP de Club Delphi.

[Herramienta] Migrar estructura de bases Paradox a Firebird Pdox2FB.zip
  • Se agregó llaves primarias e indices secundarios y se cambio el tipo moneda de DOUBLE PRECISION a NUMERIC(10,2) (gracias al aporte de Lepe)
  • Se agregó la creación de la llave primaria con CONSTRAINT .... PRIMARY KEY (gracias al TIP de Manuel)
  • Se agregaron otros tipos de datos (gracias al aporte de basti)
  • Gracias a Neftali por su atención y ofrecimiento del FTP Público
Espero sea de utilidad y serán bienvenidos todos los comentarios y criticas al mismo.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #13  
Antiguo 12-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Hola amigos

Antes que nada, agradezco a todos los que han leido este hilo.

Y pues yo sigo con mi "juguete" de migrar tablas Paradox a Firebird y la intención de este nuevo mensaje es la de dejarles saber que además de la estructura de la base de datos ya he podido migrar los datos de las tablas Paradox a Firebird.

Se que aún quedan muchas cosas por hacer y algunos problemas de casting pero mi pobre conocimiento me limita a hacerlo muy lentamente.

Se que hay herramientas poderosas que hacen esto mismo, pero como les digo, es un juguete que se me ocurrio desarrollar y que me ha evitado algunos minutos de trabajo extra al estar migrando mis sistemas a Firebird.

Ya he subido al FTP del Club la nueva versión y espero que les agrade, si fuera posible me gustaría que me retroalimentaran con sus comentarios, criticas y sugerencias.

Aqui pueden bajar este pequeño aporte de mi parte, no tiene restricción alguna, asi que no le he puesto licencia de ningún tipo.

[Herramienta] Migrar Tablas Paradox a Firebird Pdox2FB.zip

Saludos y gracias por leerme.

Sinceramente

Eliseo.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
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
Enviar correo desde fastnet desde delphi. uper Internet 1 20-02-2007 01:32:11
create view en delphi piyugo SQL 3 02-09-2004 00:33:00
Utilización del EXTERNAL con CREATE TABLE feruiz Firebird e Interbase 4 01-06-2004 07:15:27
Problema en Create table Red_Delphi Oracle 1 09-02-2004 15:04:02
error en el create table xerkan Firebird e Interbase 3 07-10-2003 15:43:24


La franja horaria es GMT +2. Ahora son las 10:12:04.


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