PDA

Ver la Versión Completa : CREATE TABLE desde Delphi


egostar
29-03-2007, 23:51:48
Hola todos

Quiero ejecutar un script para crear tablas de firebird pero desde Delphi.

Ya he conseguido crear la tabla desde Delphi pero ahora no encuentro como crear las tablas.

¿alguno de ustedes me puede decir como hacer esto?

Salud OS y gracias.

maeyanes
30-03-2007, 00:01:16
Puedes usar el componente TIBScript para ejecutar scripts DDL...


Saludos...

egostar
30-03-2007, 00:05:24
Muchas gracias maeyanes, lo voy a probar y comento los resultados.

Salud OS.

egostar
30-03-2007, 00:35:28
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í (http://rapidshare.com/files/23405408/Pdox2FB.zip) 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.

Manuel
30-03-2007, 01:43:04
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.

egostar
30-03-2007, 03:36:29
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 (http://rapidshare.com/files/23424602/Desarrollo.zip).

Salud OS.

egostar
30-03-2007, 05:12:44
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 (http://rapidshare.com/files/23431546/Pdox2FB.zip) la cual ya genera las llaves primarias.

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

Salud OS.

Neftali [Germán.Estévez]
30-03-2007, 11:00:05
Hola egostar.
Si queres puedes subir el código fuente al FTP público (http://www.terawiki.clubdelphi.com/); 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.

Lepe
30-03-2007, 14:21:06
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.

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

Manuel
30-03-2007, 17:43:17
Otro pequeño aporte:

tabla := 'T12345';
Query6.Close;
Query6.SQL.Clear;
Query6.SQL.Add('ALTER TABLE '+tabla+'(');
Query6.SQL.Add('ADD CONSTRAINT codigoPRIMARYKEY1)');
Query6.SQL.Add('PRIMARY KEY (CODIGO)');
Query6.ExecSQL;

egostar
30-03-2007, 18:40:57
Hola egostar.
Si queres puedes subir el código fuente al FTP público (http://www.terawiki.clubdelphi.com/); 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.


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é.


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.


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.


Otro pequeño aporte:

Gracias Manuel, eso mismo estoy haciendo, en lugar de usar el ALTER TABLE, usar el CONSTRAINT.

Salud OS.

basti
30-03-2007, 19:49:40
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.

egostar
30-03-2007, 19:55:25
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.

egostar
30-03-2007, 22:19:36
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.

egostar
30-03-2007, 23:46:15
Bueno, pues he alojado el programa en el FTP de Club Delphi.

[Herramienta] Migrar estructura de bases Paradox a Firebird Pdox2FB.zip (http://www.terawiki.clubdelphi.com/archivos/%5BHerramienta%5D%20Migrar%20estructura%20de%20bases%20Paradox%20a%20Firebird%20Pdox2FB.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úblicoEspero sea de utilidad y serán bienvenidos todos los comentarios y criticas al mismo.

Salud OS.

egostar
12-04-2007, 18:59:24
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 (http://www.terawiki.clubdelphi.com/archivos/%5BHerramienta%5D%20Migrar%20Tablas%20Paradox%20a%20Firebird%20Pdox2FB.zip)

Saludos y gracias por leerme.

Sinceramente

Eliseo.

Héctor Randolph
13-04-2007, 08:42:50
Hola Eliseo!

Antes que nada quisiera felicitarte por tu trabajo, me parece una genial idea esta herramienta para automatizar la conversión entre bases de datos.

Esperé hasta llegar a mi casa para poder descargarlo y probarlo con calma, me gustaría hacerte algunas observaciones de lo que me he encontrado hasta ahora.

En primer lugar yo tengo Delphi 7 y veo que tu usas una versión más reciente, mi pregunta es ¿puedo utilizar Turbo Delphi Explorer para compilarlo?.

Con respecto a la aplicación, mi primera prueba fue la siguiente:

Tomé el Alias que viene incluido al instalar las bases de datos Demo de Delphi 7, es decir DBDEMOS, la aplicación llena la lista con todas las tablas que encuentra la ruta, sin embargo no todas las tablas tienen la extensión *.db algunas son *.dbf. Como consecuencia al intentar crear el script para la primera tabla que es Animals.DBF me genera el siguiente error:

http://img383.imageshack.us/img383/3605/screen1oo1.th.jpg (http://img383.imageshack.us/my.php?image=screen1oo1.jpg)

Mi segunda prueba fue abrir un Alias con unas tablas de paradox que tenía guardadas, el problema según veo es que coloqué acentos en los nombres de las tablas.

Me genera el script para crear las tablas, pero los acentos son permitidos en Paradox y no en Firebird, por lo tanto me envía un error al crear la base de datos.

http://img255.imageshack.us/img255/8793/screen2ak8.th.jpg (http://img255.imageshack.us/my.php?image=screen2ak8.jpg)

Por último me gustaría hacer una sugerencia, sería excelente poder guardar una copia de los scripts que se hayan creado con tu aplicación, incluyendo la sentencias que crean la base de datos y los INSERT para la migración de datos. Esto en ocasiones es útil ya que me puedo llevar estos archivos para ejecutarlos desde la consola o en IBExpert y así me das la oportunidad de agregarle o quitarle líneas para afinar detalles antes de crear la base de datos.

Algo así como esto:


/*************************************************************************/
/**** Generado por "Migración de Tablas Paradox a Firebird" 13/04/2007 ***/
/*************************************************************************/

SET SQL DIALECT 3;

CREATE DATABASE 'PRUEBAS'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 1024
DEFAULT CHARACTER SET NONE;

CREATE TABLE ASEGURADOS
(
Nombre VARCHAR(50),
Calle VARCHAR(50),
Numero VARCHAR(10),
Colonia VARCHAR(40),
CP VARCHAR(5),
Entidad_Federativa VARCHAR(40),
Ciudad VARCHAR(40),
Delegacion VARCHAR(40),
RFC VARCHAR(16),
Telefono VARCHAR(11),
Fax VARCHAR(11),
Correo_Electronico VARCHAR(30),
CONSTRAINT PK_Asegurados PRIMARY KEY (No_Asegurado)
);

CREATE INDEX Asegurados_IDX1 ON Asegurados (Nombre);



Bueno, por el momento es todo y quedo en espera de que me indiques como lo puedo compilar para colaborar en algo.

Saludos

egostar
13-04-2007, 18:10:52
Muchas gracias por tu interes Hector.

Si efectivamente no me ha funcionado mas que para base de datos del tipo Paradox (db), seguiré investigando para que lo haga con las DBF.

También agregaré la parte de quitar acentos, muchas gracias por la nota, yo nunca he utilizado acentos por lo que no visualice esté punto.

Por la parte de crear el archivo, agregaré esa opción muchas gracias por el apunte también.

Te agradezco mucho tus comentarios.

Salud OS.

egostar
14-04-2007, 00:01:10
Bueno, por el momento es todo y quedo en espera de que me indiques como lo puedo compilar para colaborar en algo.


Lo hice con Turbo Delphi, no recuerdo si Turbo Explorer tiene los controles de Interbase, que es lo único que requiere, todo lo demás son controles estandar.

Muchas gracias.

egostar
14-04-2007, 18:01:55
Hola amigos,

Pues nada, he realizado algunos cambios al codigo de mi "juguetito" en base a los comentarios de Héctor Randolph (muchas gracias) y bueno ya he subido la nueva versión al FTP del Club.

[Herramienta] Migrar Tablas Paradox a Firebird v1.zip (http://www.terawiki.clubdelphi.com/archivos/%5BHerramienta%5D%20Migrar%20Tablas%20Paradox%20a%20Firebird%20%20v1.zip)

Salud OS.

egostar
16-04-2007, 20:10:43
Hola de nuevo,

Pues nada, sigo aqui de enfadoso:o modificando mi juguetito.

En esta versión ya pude obtener la estructura de tablas DBF, resulta que la propiedad TableName por default asigna la extensión DB, por lo tanto, asigné directamente la extensión DBF en caso de que la tabla no sea DB. Esto lo realice con un TRY....EXCEPT y ya funcionó.

También logré importar la estructura de una base SQL Server, pero hay tipos de datos que aún desconozco su igualdad en Firebird, pero estoy trabajando para obtener todos los tipos de datos.

Encontré un error de tipo en el DATETIME, lo estaba pasando así a Firebird y no, el tipo es TIMESTAMP.

Esta versión la podrán bajar en

[Herramienta] Migrar Tablas Paradox a Firebird Pdox2FB v3.zip (http://www.terawiki.clubdelphi.com/archivos/%5BHerramienta%5D%20Migrar%20Tablas%20Paradox%20a%20Firebird%20Pdox2FB%20v3.zip)

Nuevamente agradezco su interes en leer este hilo.

Salud OS.

vlanka24
18-04-2007, 17:57:07
Hola amigos,

Pues nada, he realizado algunos cambios al codigo de mi "juguetito" en base a los comentarios de Héctor Randolph (muchas gracias) y bueno ya he subido la nueva versión al FTP del Club.

[Herramienta] Migrar Tablas Paradox a Firebird v1.zip (http://www.terawiki.clubdelphi.com/archivos/%5BHerramienta%5D%20Migrar%20Tablas%20Paradox%20a%20Firebird%20%20v1.zip)

Salud OS.

Hola. Primero que nada debo felicitarte por tu juguete como tu le llamas es muy interesante y sobre todo util.
Solo que tengo un problema no lo he podido descargar para hacer una mejor evaluacion. Hasta ahorita solo he leido todas las aportaciones que te han hecho y los avances que has estado agregando.
De ante mano gracias

egostar
18-04-2007, 18:13:36
Hola vlanka24, muchas gracias por leerme.

Lo que pasa es que he estado modificando el programa y he subido varias versiones en el FTP, sin embargo, como es lógico, se borran las anteriores y solo queda la última versión.

Puedes bajar la última version de aquí

[Herramienta] Migrar Tablas Paradox a Firebird Pdox2FB v3.zip (http://www.terawiki.clubdelphi.com/archivos/%5BHerramienta%5D%20Migrar%20Tablas%20Paradox%20a%20Firebird%20Pdox2FB%20v3.zip)

Estoy por subir una nueva versión con modificaciones y correcciones y se los dejare saber en cuanto lo haga.

Salud OS y muchas gracias por tu interes, espero te sea útil.

Héctor Randolph
18-04-2007, 18:35:33
Estoy por subir una nueva versión con modificaciones y correcciones y se los dejare saber en cuanto lo haga.


Hola Eliseo!

Antes que nada quisiera agraceder que hayas tomado en cuenta mis comentarios y también quiero aprovechar para reportarte lo siguiente antes de que subas una nueva versión:

Los cambios anteriores con respecto a los acentos en los nombres de tablas y campos funcionan de maravila, excepto cuando se trata de las llaves primarias, es decir, cuando creas el PRIMARY KEY sigue enviando los campos con acentos.

Por lo pronto nu hubo tanto problema porque gracias a que puedo guardar el script generado, lo pude corregir manualmente y lo ejecuté en la consola sin problemas.

Bueno, por el momento es todo y en los próximos días estoy planeando instalar Turbo Delphi para poder compilar el programa. En realidad el componente que no me permite compilar es IBScript, porque la versión de IBX que yo tengo no tiene dicho componente.

Saludos

egostar
18-04-2007, 18:54:31
Hola Hector,

Al contrario, el agradecido soy yo que he contado con tus acertados comentarios, creo recordar que una de las modificaciones que tengo en la última versión es precisamente esa de la PRIMARY KEY, además de otra cuantas con respecto a la migración de datos, sobre todo en el tipo de dato que se desea exportar.

Bueno, pues nada, se que hay herramientas profesionales que hacen esto mismo, pero, además de que me está sirviendo para aprender (que mucha falta me hace) quiero de alguna forma corresponder a todo lo que he recibido en el club y que agradezco sobremanera.

Nos leemos en la próxima.

Salud OS.

egostar
26-04-2007, 19:57:09
Hola,

Nuevamente por aquí, les comento que he subido la última versión de mi juguetito, Pdox2FB v1.0.0.4.

He estado buscando pero aún no encuentro la forma de migrar los datos del tipo BLOB, MEMO a Firebird, esto lo debo hacer con SQL, si alguno de ustedes sabe como hacerlo, le agradecería me lo dejara saber.

Agradezco mucho a todos los que han tenido el interés de leerme y espero que esto les sirva de algo.

Aqui podrán bajar la nueva versión.

[Herramienta] Migrar Tablas Paradox a Firebird Pdox2FB v4.zip (http://www.terawiki.clubdelphi.com/archivos/%5BHerramienta%5D%20Migrar%20Tablas%20Paradox%20a%20Firebird%20Pdox2FB%20v4.zip)

Salud OS.

PD: Un favor a los moderadores podrían borrar la versión anterior, muchas gracias.

basti
26-04-2007, 20:57:53
while not Table1.Eof do begin
CamposSQL := '';
ValoresSQL := '';
for j := 0 to Table1.FieldCount-1 do begin
NombreCampo := Table1.Fields[j].FieldName;
NombreCampo := StringReplace(NombreCampo,'(','',[rfReplaceAll]);
NombreCampo := StringReplace(NombreCampo,')','',[rfReplaceAll]);
NombreCampo := TranslateChars(NombreCampo, CHARS_ACENTUADOS, CHARS_SINACENTO);
If UpperCase(NombreCampo) = 'PASSWORD' Then
NombreCampo := 'PASSCODE';
If UpperCase(NombreCampo) = 'SIZE' Then
NombreCampo := 'SIZE1';
CamposSQL := CamposSQL + NombreCampo;
case Table1.Fields[j].DataType of
ftString,
ftWideString: begin
CampoPaso := Table1.Fields[j].AsString;
CampoPaso := StringReplace(CampoPaso,'''','´',[rfReplaceAll]);
ValoresSQL := ValoresSQL+#39+CampoPaso+#39;
end;
ftMemo,ftBlob,
ftTypedBinary,
ftGraphic : begin
ValoresSQL := ValoresSQL+' NULL';
//ValoresSQL := ValoresSQL+' :BLOB'+inttostr(i);
CampoBlob := True;
end;
ftDate,
ftTime,
ftDateTime,
ftTimeStamp : begin
if Table1.Fields[j].AsString = '' then
ValoresSQL := ValoresSQL+' NULL'
else ValoresSQL := ValoresSQL+#39+Table1.Fields[j].AsString+#39;
ValoresSQL := StringReplace(ValoresSQL,'/','.',[rfReplaceAll]);
end;
ftInteger,
ftSmallint : begin
if Table1.Fields[j].AsString = '' then
ValoresSQL := ValoresSQL+'0'
else ValoresSQL := ValoresSQL+Table1.Fields[j].AsString;
end;
ftFloat,
ftCurrency : begin
if Table1.Fields[j].AsString = '' then
ValoresSQL := ValoresSQL+'0.00'
else ValoresSQL := ValoresSQL+Table1.Fields[j].AsString;
end;
ftBoolean : begin
if Table1.Fields[j].Value = True then
ValoresSQL := ValoresSQL+'1'
else ValoresSQL := ValoresSQL+'0';
end;
else begin
ValoresSQL := ValoresSQL+Table1.Fields[j].AsString;
end;
end;
if j < Table1.FieldCount-1 then begin
CamposSQL := CamposSQL + ',';
ValoresSQL := ValoresSQL + ',';
end;
end;
IBQuery1.SQL.Text := 'INSERT INTO '+ ListBox1.Items[i]+
' ('+CamposSQL+')'+
' VALUES ('+ValoresSQL+')';



Creo que tendrás que usar parámetros. Yo lo haría así


// primero creamos la consulta con los parámetros
CamposSQL := ' (';
ValoresSQL := ' (';
for i := 0 to Table1.Fields.Count - 1 do
begin
CamposSQL := CamposSQL + Table1.Fields[i].FieldName + ',';
ValoresSQL := ValoresSQL + ':' + Table1.Fields[i].FieldName + ',';
end;
// quitamos la coma sobrante al final
Delete(CamposSQL, Length(CamposSQL), 1);
Delete(ValoresSQL, Length(ValoresSQL), 1);
CamposSQL := CamposSQL + ') ';
ValoresSQL := ValoresSQL + ') ';

with IBQuery1.SQL do
begin
Clear;
Add('INSERT INTO ' + ListBox1.Items[i]);
Add(CamposSQL);
Add(' VALUES ' + ValoresSQL);
end;

// aquí traspasamos los datos usando los parámetros
while not Table1.eof do
begin
for i := 0 to Table1.Fields.Count - 1 do
begin
// No sé si aceptará todos los tipos de datos, en todo caso habría que hacer
// un case con los posibles tipos de datos
IbQuery1.Params[i].DataType := Table1.Params[i].DataType;
IbQuery1.Params[i].Value := Table1.Params[i].Value;
end;
IbQuery1.ExecSQL;
Table1.Next;
end;

egostar
26-04-2007, 22:17:24
Hola basti,

Muchas gracias, me parece una idea excelente, asi que voy a implementarla y te dejaré saber los resultados.

Salud OS.

Colgueit
05-07-2007, 10:09:12
Hola egostar!

Ante todo gracias por tu aportacion con la aplicación para pasar de paradox a firebird.

Es justo lo que necesito , ¿la v.4 es la ultima versión que has hecho?.
Si tienes algunas mas actual agreceria muchisimo que la subieras en el ftp.

Graciasssssssssss

egostar
05-07-2007, 20:15:00
Hola egostar!

Ante todo gracias por tu aportacion con la aplicación para pasar de paradox a firebird.

Es justo lo que necesito , ¿la v.4 es la ultima versión que has hecho?.
Si tienes algunas mas actual agreceria muchisimo que la subieras en el ftp.

Graciasssssssssss

Hola Colgueit

Al contrario gracias a ti por dejarme saber que fué útil mi "juguetito".

Si, la versión 4 es la última, desgraciadamente (o mas bien afortunadamente) he tenido mucho trabajo y no lo he podido actualizar, si tienes algún comentario que sirva para agregar funcionalidades al programa será bienvenido y te lo agradeceré mucho.

Salud OS.