Jump to content


Photo

Proyecto MTF (MySQL to Firebird)


  • Please log in to reply
105 replies to this topic

#21 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 18 November 2008 - 06:30 PM

¿y específicamente donde debo ponerlo?, porque lo he puesto en todas las posibles ubicaciones y me da el mismo resultado.

Saludos.
  • 0

#22 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 19 November 2008 - 06:56 AM

si logro ver bien, deberia ir entra la 113 y 114

si el ClientDataSet, esta abierto no lo cierras antes de asignar la tabla en el ZQuery.  No se como funcionaria el clientdataset, pero no veo donde lo cierras y si ya esta abierto no creo que se refresque
  • 0

#23 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 19 November 2008 - 06:59 AM

Efectivamente esas fueron los dos primeros lugares que lo coloqué y me dio el mismo resultado, ¿considera que antes del next debería cerrar el ClientDataset?.

Saludos.
  • 0

#24 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 19 November 2008 - 07:10 AM

no creo que antes del next, pero si lo deberias antes de reasignar la nueva tabla al query, deberias cerrar el query y el clientdateset...

ZTablas.Close;
cdTablas.Close;
  • 0

#25 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 19 November 2008 - 08:40 AM

He dado con todo y no logro cambiar el resultado, siempre es el mismo, lo he puesto luego de cada for haciendo pruebas y siempre me lanza el mismo resultado   8o|  :|  :s  :(  :
  • 0

#26 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 19 November 2008 - 08:41 AM

prueba ejecutando paso a paso, y fijate si el clientdataset actualiza los datos.
  • 0

#27 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 19 November 2008 - 09:52 AM

Efectivamente colega, el problema se trataba de un Close al ClientDataset debajo de ZTablas.close, muchas gracias compadre.

Saludos.
  • 0

#28 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 19 November 2008 - 10:36 AM

de nada, estamos para ayudar
  • 0

#29 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 01 December 2008 - 05:48 PM

Bueno, retomando el proyecto, he estado tratando de agregar una barra de progreso en donde se va creando la DDL de Firebird y no he logrado correrlo, con tantos ciclos for no sé cual tomo como referancia para la posición de la misma, ¿alguien me puede dar una mano?.  :$

Saludos.
  • 0

#30 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 01 December 2008 - 06:13 PM

Hola
Y cual es el problema que tienes con el progress?.
Saludos
  • 0

#31 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 01 December 2008 - 06:16 PM

Pues no sé con cuál ciclo debo colocarlo como position mientras se vaya creando el script.  :^)
  • 0

#32 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 01 December 2008 - 06:23 PM

Hola
Pues no se donde me perdi, Cual ciclo, donde?.
No veo el codigo.
Saludos
  • 0

#33 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 01 December 2008 - 06:27 PM



delphi
  1. procedure TFMain.Button4Click(Sender: TObject);
  2. Var
  3.   Lineas,I,J,Idx: Integer;
  4.   Separador: String;
  5.   NombreCampo,Indice: String;
  6. begin
  7.   Memo1.Clear;
  8.   for i := 0 to Tablas.Items.Count - 1 do begin
  9.     ZTablas.Close;
  10.     cdTablas.Close;
  11.     ZTablas.TableName := Tablas.Items[i].Text;
  12.     Try
  13.       ZTablas.Open;
  14.       cdTablas.Open;
  15.     except
  16.       ShowMessage('se produjo un problema al abrir');
  17.       Exit;
  18.     End;
  19.     cdTablas.First;
  20.  
  21.     Memo1.Lines.Add('CREATE TABLE '+UpperCase(Tablas.Items[i].Text));
  22.     Memo1.Lines.Add('(');
  23.  
  24.     for J := 0 to cdTablas.FieldCount-1 do begin
  25.  
  26.         if J < cdTablas.FieldCount-1 then Separador := ','
  27.         else begin
  28.               if (J = cdTablas.FieldCount-1) and
  29.                   (cdTablas.IndexFieldCount > 0) then begin
  30.                   Separador := ',';
  31.               end
  32.               else Separador := ' ';
  33.         end;
  34.         if cdTablas.Fields[j].IsIndexField then Separador := ' NOT NULL' + Separador;
  35.         NombreCampo := cdTablas.Fields[j].FieldName;
  36.         If UpperCase(NombreCampo) = 'PASSWORD' Then
  37.           NombreCampo := 'PASSCODE';
  38.         If UpperCase(NombreCampo) = 'SIZE' Then
  39.           NombreCampo := 'SIZE1';
  40.  
  41.         //Elimine estas lineas porque agregué caracteres a las constantes
  42.         //usadas por la función TranslateChars() de Federico Firenze
  43.         //NombreCampo := StringReplace(NombreCampo,' ','_',[rfReplaceAll]);
  44.         //NombreCampo := StringReplace(NombreCampo,'ñ','n',[rfReplaceAll]);
  45.         //NombreCampo := StringReplace(NombreCampo,'Ñ','N',[rfReplaceAll]);
  46.  
  47.         NombreCampo := StringReplace(NombreCampo,'(','',[rfReplaceAll]);
  48.         NombreCampo := StringReplace(NombreCampo,')','',[rfReplaceAll]);
  49.         NombreCampo := TranslateChars(NombreCampo, CHARS_ACENTUADOS, CHARS_SINACENTO);
  50.         case cdTablas.Fields[j].DataType of
  51.             ftString,
  52.             ftWideString: begin
  53.                             Memo1.Lines.Add(' '+NombreCampo+' VARCHAR('+
  54.                                             inttostr(cdTablas.Fields[j].DisplayWidth)+')'+
  55.                                             Separador);
  56.                           end;
  57.             ftFloat    : begin
  58.                             Memo1.Lines.Add(' '+NombreCampo+' FLOAT'+Separador);
  59.                           end;
  60.             ftCurrency  : begin
  61.                             Memo1.Lines.Add(' '+NombreCampo+' NUMERIC(10,2)'+Separador);
  62.                           end;
  63.             ftTime      : begin
  64.                             Memo1.Lines.Add(' '+NombreCampo+' TIME'+Separador);
  65.                           end;
  66.             ftDate      : begin
  67.                             Memo1.Lines.Add(' '+NombreCampo+' DATE'+Separador);
  68.                           end;
  69.             ftDateTime,
  70.             ftTimeStamp  : begin
  71.                             Memo1.Lines.Add(' '+NombreCampo+' TIMESTAMP'+Separador);
  72.                           end;
  73.             ftAutoInc,
  74.             ftInteger  : begin
  75.                             Memo1.Lines.Add(' '+NombreCampo+' INTEGER'+Separador);
  76.                           end;
  77.             ftMemo      : begin
  78.                             Memo1.Lines.Add(' '+NombreCampo+' BLOB SUB_TYPE 1'+Separador);
  79.                           end;
  80.             ftBlob,
  81.             ftTypedBinary,
  82.             ftGraphic  : begin
  83.                             Memo1.Lines.Add(' '+NombreCampo+' BLOB SUB_TYPE 0'+Separador);
  84.                           end;
  85.             ftBoolean,
  86.             ftSmallint : begin
  87.                             Memo1.Lines.Add(' '+NombreCampo+' SMALLINT'+Separador);
  88.                           end;
  89.         end;
  90.     end;
  91.  
  92.     if cdTablas.IndexFieldCount > 0 then begin
  93.       for Idx := 0 to cdTablas.IndexDefs.Count - 1 do begin
  94.           Indice := cdTablas.IndexDefs[Idx].Fields;
  95.           If UpperCase(Indice) = 'PASSWORD' Then
  96.               Indice := 'PASSCODE';
  97.           If UpperCase(Indice) = 'SIZE' Then
  98.               Indice := 'SIZE1';
  99.           Indice := StringReplace(Indice,'(','',[rfReplaceAll]);
  100.           Indice := StringReplace(Indice,')','',[rfReplaceAll]);
  101.           Indice := TranslateChars(Indice, CHARS_ACENTUADOS, CHARS_SINACENTO);
  102.           with cdTablas.IndexDefs[Idx] do begin
  103.                 if ixPrimary in Options then begin
  104.                   Memo1.Lines.Add(' CONSTRAINT PK_'+Tablas.Items[i].Text+' PRIMARY KEY ('+Indice+')');
  105.                   Memo1.Lines.Add(');');
  106.                   Memo1.Lines.Add('');
  107.                 end;
  108.                 if ixCaseInsensitive in Options then begin
  109.                   Memo1.Lines.Add('CREATE INDEX '+Tablas.Items[i].Text+'_IDX'+inttostr(Idx)+
  110.                                   ' ON '+Tablas.Items[i].Text+' ('+Indice+');');
  111.                   Memo1.Lines.Add('');
  112.                 end;
  113.           end;
  114.       end;
  115.     end
  116.     else begin
  117.           Memo1.Lines.Add(');');
  118.           Memo1.Lines.Add('');
  119.     end;
  120.   end;
  121. end;



Saludos.
  • 0

#34 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 01 December 2008 - 06:55 PM

Pregunta, "No" ¿es una palabra reservada de Firebird?, porque al agregar las tablas con el IBScript me tira el siguiente error:

---------------------------
Debugger Exception Notification
---------------------------
Project MTF.exe raised exception class EIBInterBaseError with message 'Dynamic SQL Error
SQL error code = -104
Token unknown - line 3, column 2
No'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------


La primera tabla se crea bien pero al llegar a la segunda el primer campo es No y ahí me dispara el error. Alguien por Favor me confirme eso.

Saludos.

  • 0

#35 felipe

felipe

    Advanced Member

  • Administrador
  • 3283 posts
  • LocationColombia

Posted 01 December 2008 - 07:58 PM

Hola que tal...
Como va el proyecto :D... ¿algunos pequeños problemas?... Fernando, según el IBExpert "no" si es una palabra reservada en Firebird.
  • 0

#36 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 02 December 2008 - 05:48 AM

Ah Joder, ya me lo imaginaba  :(, ya me costará hacer una pequeña rutina con eso de las palabras reservadas, muchas gracias Felipe.

Saludos.

PD. Alguien me Ayude con la barra de progreso que posteé en varios hilos atrás. ;)
  • 0

#37 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 02 December 2008 - 07:16 AM

Yo personalmente agregaria dos barras de progreso, una para las tablas y otra para los campos(pbTablas, pbCampos)



delphi
  1. procedure TFMain.Button4Click(Sender: TObject);
  2. Var
  3.   Lineas,I,J,Idx: Integer;
  4.   Separador: String;
  5.   NombreCampo,Indice: String;
  6. begin
  7.   Memo1.Clear;
  8.  
  9.   (*** INCIALIZA EL DE LAS TABLAS ***)
  10.   pbTablas.max := Tablas.Items.Count;
  11.   pbTablas.Position := 0;
  12.  
  13.   for i := 0 to Tablas.Items.Count - 1 do begin
  14.     (*** INCREMENTA EL DE LAS TABLAS ***)
  15.     pbTablas.Position := pbTablas.Position + 1;
  16.     ZTablas.Close;
  17.     cdTablas.Close;
  18.     ZTablas.TableName := Tablas.Items[i].Text;
  19.     Try
  20.       ZTablas.Open;
  21.       cdTablas.Open;
  22.     except
  23.       ShowMessage('se produjo un problema al abrir');
  24.       Exit;
  25.     End;
  26.     cdTablas.First;
  27.  
  28.     Memo1.Lines.Add('CREATE TABLE '+UpperCase(Tablas.Items[i].Text));
  29.     Memo1.Lines.Add('(');
  30.    
  31.     (*** INCIALIZA EL DE LOS CAMPOS ***)
  32.     pbCampos.Max :=  cdTablas.FieldCount;
  33.     pbCampos.Position := 0;
  34.  
  35.     for J := 0 to cdTablas.FieldCount-1 do begin
  36.  
  37.         (*** INCREMENTA EL DE LOS CAMPOS ***)
  38.         pbCampos.Position := pbCampos.Position + 1;
  39.  
  40.         if J < cdTablas.FieldCount-1 then Separador := ','
  41.         else begin
  42.               if (J = cdTablas.FieldCount-1) and
  43.                   (cdTablas.IndexFieldCount > 0) then begin
  44.                   Separador := ',';
  45.               end
  46.               else Separador := ' ';
  47.         end;
  48.         if cdTablas.Fields[j].IsIndexField then Separador := ' NOT NULL' + Separador;
  49.         NombreCampo := cdTablas.Fields[j].FieldName;
  50.         If UpperCase(NombreCampo) = 'PASSWORD' Then
  51.           NombreCampo := 'PASSCODE';
  52.         If UpperCase(NombreCampo) = 'SIZE' Then
  53.           NombreCampo := 'SIZE1';
  54.  
  55.         //Elimine estas lineas porque agregué caracteres a las constantes
  56.         //usadas por la función TranslateChars() de Federico Firenze
  57.         //NombreCampo := StringReplace(NombreCampo,' ','_',[rfReplaceAll]);
  58.         //NombreCampo := StringReplace(NombreCampo,'ñ','n',[rfReplaceAll]);
  59.         //NombreCampo := StringReplace(NombreCampo,'Ñ','N',[rfReplaceAll]);
  60.  
  61.         NombreCampo := StringReplace(NombreCampo,'(','',[rfReplaceAll]);
  62.         NombreCampo := StringReplace(NombreCampo,')','',[rfReplaceAll]);
  63.         NombreCampo := TranslateChars(NombreCampo, CHARS_ACENTUADOS, CHARS_SINACENTO);
  64.         case cdTablas.Fields[j].DataType of
  65.             ftString,
  66.             ftWideString: begin
  67.                             Memo1.Lines.Add(' '+NombreCampo+' VARCHAR('+
  68.                                             inttostr(cdTablas.Fields[j].DisplayWidth)+')'+
  69.                                             Separador);
  70.                           end;
  71.             ftFloat    : begin
  72.                             Memo1.Lines.Add(' '+NombreCampo+' FLOAT'+Separador);
  73.                           end;
  74.             ftCurrency  : begin
  75.                             Memo1.Lines.Add(' '+NombreCampo+' NUMERIC(10,2)'+Separador);
  76.                           end;
  77.             ftTime      : begin
  78.                             Memo1.Lines.Add(' '+NombreCampo+' TIME'+Separador);
  79.                           end;
  80.             ftDate      : begin
  81.                             Memo1.Lines.Add(' '+NombreCampo+' DATE'+Separador);
  82.                           end;
  83.             ftDateTime,
  84.             ftTimeStamp  : begin
  85.                             Memo1.Lines.Add(' '+NombreCampo+' TIMESTAMP'+Separador);
  86.                           end;
  87.             ftAutoInc,
  88.             ftInteger  : begin
  89.                             Memo1.Lines.Add(' '+NombreCampo+' INTEGER'+Separador);
  90.                           end;
  91.             ftMemo      : begin
  92.                             Memo1.Lines.Add(' '+NombreCampo+' BLOB SUB_TYPE 1'+Separador);
  93.                           end;
  94.             ftBlob,
  95.             ftTypedBinary,
  96.             ftGraphic  : begin
  97.                             Memo1.Lines.Add(' '+NombreCampo+' BLOB SUB_TYPE 0'+Separador);
  98.                           end;
  99.             ftBoolean,
  100.             ftSmallint : begin
  101.                             Memo1.Lines.Add(' '+NombreCampo+' SMALLINT'+Separador);
  102.                           end;
  103.         end;
  104.     end;
  105.  
  106.     if cdTablas.IndexFieldCount > 0 then begin
  107.       for Idx := 0 to cdTablas.IndexDefs.Count - 1 do begin
  108.           Indice := cdTablas.IndexDefs[Idx].Fields;
  109.           If UpperCase(Indice) = 'PASSWORD' Then
  110.               Indice := 'PASSCODE';
  111.           If UpperCase(Indice) = 'SIZE' Then
  112.               Indice := 'SIZE1';
  113.           Indice := StringReplace(Indice,'(','',[rfReplaceAll]);
  114.           Indice := StringReplace(Indice,')','',[rfReplaceAll]);
  115.           Indice := TranslateChars(Indice, CHARS_ACENTUADOS, CHARS_SINACENTO);
  116.           with cdTablas.IndexDefs[Idx] do begin
  117.                 if ixPrimary in Options then begin
  118.                   Memo1.Lines.Add(' CONSTRAINT PK_'+Tablas.Items[i].Text+' PRIMARY KEY ('+Indice+')');
  119.                   Memo1.Lines.Add(');');
  120.                   Memo1.Lines.Add('');
  121.                 end;
  122.                 if ixCaseInsensitive in Options then begin
  123.                   Memo1.Lines.Add('CREATE INDEX '+Tablas.Items[i].Text+'_IDX'+inttostr(Idx)+
  124.                                   ' ON '+Tablas.Items[i].Text+' ('+Indice+');');
  125.                   Memo1.Lines.Add('');
  126.                 end;
  127.           end;
  128.       end;
  129.     end
  130.     else begin
  131.           Memo1.Lines.Add(');');
  132.           Memo1.Lines.Add('');
  133.     end;
  134.   end;
  135. end;



Espero te sirva
  • 0

#38 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 02 December 2008 - 06:07 PM

¡Muchissimas Gracias Eduardo!, ¡Me funcionó de pelos! :D (y)

Saludos.
  • 0

#39 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 03 December 2008 - 07:12 PM

Bueno, ya casi está saliendo la versión BETA de este proyecto, sólo me falta afinar unos cuantos detalles, mientras, dejo la interface terminado del proyecto:

Imagen Enviada

[img width=640 height=461]http://img185.imageshack.us/img185/9977/mt4zm1.jpg[/img]

Saludos.
  • 0

#40 felipe

felipe

    Advanced Member

  • Administrador
  • 3283 posts
  • LocationColombia

Posted 03 December 2008 - 07:20 PM

Luce muy bien (y)... te felicito por el trabajo, cuentas con el apoyo de nosotros para crear la versión 1.0  :D
  • 0




IP.Board spam blocked by CleanTalk.