Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   CREATE TABLE desde Delphi (https://www.clubdelphi.com/foros/showthread.php?t=41960)

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

Nuevamente agradezco su interes en leer este hilo.

Salud OS.

vlanka24 18-04-2007 17:57:07

Saludos
 
Cita:

Empezado por egostar
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

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

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

Cita:

Empezado por egostar
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

Salud OS.

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

basti 26-04-2007 20:57:53

Código Delphi [-]
      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í

Código Delphi [-]
  // 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

Cita:

Empezado por Colgueit
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.


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

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