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 26-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
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.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #2  
Antiguo 26-04-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 22
basti Va por buen camino
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;
Responder Con Cita
  #3  
Antiguo 26-04-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Hola basti,

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

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 05-07-2007
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 21
Colgueit Va por buen camino
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

Última edición por Colgueit fecha: 05-07-2007 a las 10:12:24.
Responder Con Cita
  #5  
Antiguo 05-07-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
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 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 07:02:14.


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