
Proyecto MTF (MySQL to Firebird)
#21
Posted 18 November 2008 - 06:30 PM
Saludos.
#22
Posted 19 November 2008 - 06:56 AM
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
#23
Posted 19 November 2008 - 06:59 AM
Saludos.
#24
Posted 19 November 2008 - 07:10 AM
ZTablas.Close;
cdTablas.Close;
#25
Posted 19 November 2008 - 08:40 AM





#26
Posted 19 November 2008 - 08:41 AM
#27
Posted 19 November 2008 - 09:52 AM
Saludos.
#28
Posted 19 November 2008 - 10:36 AM
#29
Posted 01 December 2008 - 05:48 PM
Saludos.
#30
Posted 01 December 2008 - 06:13 PM
Y cual es el problema que tienes con el progress?.
Saludos
#31
Posted 01 December 2008 - 06:16 PM
#32
Posted 01 December 2008 - 06:23 PM
Pues no se donde me perdi, Cual ciclo, donde?.
No veo el codigo.
Saludos
#33
Posted 01 December 2008 - 06:27 PM
procedure TFMain.Button4Click(Sender: TObject); Var Lineas,I,J,Idx: Integer; Separador: String; NombreCampo,Indice: String; begin Memo1.Clear; for i := 0 to Tablas.Items.Count - 1 do begin ZTablas.Close; cdTablas.Close; ZTablas.TableName := Tablas.Items[i].Text; Try ZTablas.Open; cdTablas.Open; except ShowMessage('se produjo un problema al abrir'); Exit; End; cdTablas.First; Memo1.Lines.Add('CREATE TABLE '+UpperCase(Tablas.Items[i].Text)); Memo1.Lines.Add('('); for J := 0 to cdTablas.FieldCount-1 do begin if J < cdTablas.FieldCount-1 then Separador := ',' else begin if (J = cdTablas.FieldCount-1) and (cdTablas.IndexFieldCount > 0) then begin Separador := ','; end else Separador := ' '; end; if cdTablas.Fields[j].IsIndexField then Separador := ' NOT NULL' + Separador; NombreCampo := cdTablas.Fields[j].FieldName; If UpperCase(NombreCampo) = 'PASSWORD' Then NombreCampo := 'PASSCODE'; If UpperCase(NombreCampo) = 'SIZE' Then NombreCampo := 'SIZE1'; //Elimine estas lineas porque agregué caracteres a las constantes //usadas por la función TranslateChars() de Federico Firenze //NombreCampo := StringReplace(NombreCampo,' ','_',[rfReplaceAll]); //NombreCampo := StringReplace(NombreCampo,'ñ','n',[rfReplaceAll]); //NombreCampo := StringReplace(NombreCampo,'Ñ','N',[rfReplaceAll]); NombreCampo := StringReplace(NombreCampo,'(','',[rfReplaceAll]); NombreCampo := StringReplace(NombreCampo,')','',[rfReplaceAll]); NombreCampo := TranslateChars(NombreCampo, CHARS_ACENTUADOS, CHARS_SINACENTO); case cdTablas.Fields[j].DataType of ftString, ftWideString: begin Memo1.Lines.Add(' '+NombreCampo+' VARCHAR('+ inttostr(cdTablas.Fields[j].DisplayWidth)+')'+ Separador); end; ftFloat : begin Memo1.Lines.Add(' '+NombreCampo+' FLOAT'+Separador); end; ftCurrency : begin Memo1.Lines.Add(' '+NombreCampo+' NUMERIC(10,2)'+Separador); end; ftTime : begin Memo1.Lines.Add(' '+NombreCampo+' TIME'+Separador); end; ftDate : begin Memo1.Lines.Add(' '+NombreCampo+' DATE'+Separador); end; ftDateTime, ftTimeStamp : begin Memo1.Lines.Add(' '+NombreCampo+' TIMESTAMP'+Separador); end; ftAutoInc, ftInteger : begin Memo1.Lines.Add(' '+NombreCampo+' INTEGER'+Separador); end; ftMemo : begin Memo1.Lines.Add(' '+NombreCampo+' BLOB SUB_TYPE 1'+Separador); end; ftBlob, ftTypedBinary, ftGraphic : begin Memo1.Lines.Add(' '+NombreCampo+' BLOB SUB_TYPE 0'+Separador); end; ftBoolean, ftSmallint : begin Memo1.Lines.Add(' '+NombreCampo+' SMALLINT'+Separador); end; end; end; if cdTablas.IndexFieldCount > 0 then begin for Idx := 0 to cdTablas.IndexDefs.Count - 1 do begin Indice := cdTablas.IndexDefs[Idx].Fields; If UpperCase(Indice) = 'PASSWORD' Then Indice := 'PASSCODE'; If UpperCase(Indice) = 'SIZE' Then Indice := 'SIZE1'; Indice := StringReplace(Indice,'(','',[rfReplaceAll]); Indice := StringReplace(Indice,')','',[rfReplaceAll]); Indice := TranslateChars(Indice, CHARS_ACENTUADOS, CHARS_SINACENTO); with cdTablas.IndexDefs[Idx] do begin if ixPrimary in Options then begin Memo1.Lines.Add(' CONSTRAINT PK_'+Tablas.Items[i].Text+' PRIMARY KEY ('+Indice+')'); Memo1.Lines.Add(');'); Memo1.Lines.Add(''); end; if ixCaseInsensitive in Options then begin Memo1.Lines.Add('CREATE INDEX '+Tablas.Items[i].Text+'_IDX'+inttostr(Idx)+ ' ON '+Tablas.Items[i].Text+' ('+Indice+');'); Memo1.Lines.Add(''); end; end; end; end else begin Memo1.Lines.Add(');'); Memo1.Lines.Add(''); end; end; end;
Saludos.
#34
Posted 01 December 2008 - 06:55 PM
---------------------------
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.
#35
Posted 01 December 2008 - 07:58 PM
Como va el proyecto

#36
Posted 02 December 2008 - 05:48 AM

Saludos.
PD. Alguien me Ayude con la barra de progreso que posteé en varios hilos atrás.

#37
Posted 02 December 2008 - 07:16 AM
procedure TFMain.Button4Click(Sender: TObject); Var Lineas,I,J,Idx: Integer; Separador: String; NombreCampo,Indice: String; begin Memo1.Clear; (*** INCIALIZA EL DE LAS TABLAS ***) pbTablas.max := Tablas.Items.Count; pbTablas.Position := 0; for i := 0 to Tablas.Items.Count - 1 do begin (*** INCREMENTA EL DE LAS TABLAS ***) pbTablas.Position := pbTablas.Position + 1; ZTablas.Close; cdTablas.Close; ZTablas.TableName := Tablas.Items[i].Text; Try ZTablas.Open; cdTablas.Open; except ShowMessage('se produjo un problema al abrir'); Exit; End; cdTablas.First; Memo1.Lines.Add('CREATE TABLE '+UpperCase(Tablas.Items[i].Text)); Memo1.Lines.Add('('); (*** INCIALIZA EL DE LOS CAMPOS ***) pbCampos.Max := cdTablas.FieldCount; pbCampos.Position := 0; for J := 0 to cdTablas.FieldCount-1 do begin (*** INCREMENTA EL DE LOS CAMPOS ***) pbCampos.Position := pbCampos.Position + 1; if J < cdTablas.FieldCount-1 then Separador := ',' else begin if (J = cdTablas.FieldCount-1) and (cdTablas.IndexFieldCount > 0) then begin Separador := ','; end else Separador := ' '; end; if cdTablas.Fields[j].IsIndexField then Separador := ' NOT NULL' + Separador; NombreCampo := cdTablas.Fields[j].FieldName; If UpperCase(NombreCampo) = 'PASSWORD' Then NombreCampo := 'PASSCODE'; If UpperCase(NombreCampo) = 'SIZE' Then NombreCampo := 'SIZE1'; //Elimine estas lineas porque agregué caracteres a las constantes //usadas por la función TranslateChars() de Federico Firenze //NombreCampo := StringReplace(NombreCampo,' ','_',[rfReplaceAll]); //NombreCampo := StringReplace(NombreCampo,'ñ','n',[rfReplaceAll]); //NombreCampo := StringReplace(NombreCampo,'Ñ','N',[rfReplaceAll]); NombreCampo := StringReplace(NombreCampo,'(','',[rfReplaceAll]); NombreCampo := StringReplace(NombreCampo,')','',[rfReplaceAll]); NombreCampo := TranslateChars(NombreCampo, CHARS_ACENTUADOS, CHARS_SINACENTO); case cdTablas.Fields[j].DataType of ftString, ftWideString: begin Memo1.Lines.Add(' '+NombreCampo+' VARCHAR('+ inttostr(cdTablas.Fields[j].DisplayWidth)+')'+ Separador); end; ftFloat : begin Memo1.Lines.Add(' '+NombreCampo+' FLOAT'+Separador); end; ftCurrency : begin Memo1.Lines.Add(' '+NombreCampo+' NUMERIC(10,2)'+Separador); end; ftTime : begin Memo1.Lines.Add(' '+NombreCampo+' TIME'+Separador); end; ftDate : begin Memo1.Lines.Add(' '+NombreCampo+' DATE'+Separador); end; ftDateTime, ftTimeStamp : begin Memo1.Lines.Add(' '+NombreCampo+' TIMESTAMP'+Separador); end; ftAutoInc, ftInteger : begin Memo1.Lines.Add(' '+NombreCampo+' INTEGER'+Separador); end; ftMemo : begin Memo1.Lines.Add(' '+NombreCampo+' BLOB SUB_TYPE 1'+Separador); end; ftBlob, ftTypedBinary, ftGraphic : begin Memo1.Lines.Add(' '+NombreCampo+' BLOB SUB_TYPE 0'+Separador); end; ftBoolean, ftSmallint : begin Memo1.Lines.Add(' '+NombreCampo+' SMALLINT'+Separador); end; end; end; if cdTablas.IndexFieldCount > 0 then begin for Idx := 0 to cdTablas.IndexDefs.Count - 1 do begin Indice := cdTablas.IndexDefs[Idx].Fields; If UpperCase(Indice) = 'PASSWORD' Then Indice := 'PASSCODE'; If UpperCase(Indice) = 'SIZE' Then Indice := 'SIZE1'; Indice := StringReplace(Indice,'(','',[rfReplaceAll]); Indice := StringReplace(Indice,')','',[rfReplaceAll]); Indice := TranslateChars(Indice, CHARS_ACENTUADOS, CHARS_SINACENTO); with cdTablas.IndexDefs[Idx] do begin if ixPrimary in Options then begin Memo1.Lines.Add(' CONSTRAINT PK_'+Tablas.Items[i].Text+' PRIMARY KEY ('+Indice+')'); Memo1.Lines.Add(');'); Memo1.Lines.Add(''); end; if ixCaseInsensitive in Options then begin Memo1.Lines.Add('CREATE INDEX '+Tablas.Items[i].Text+'_IDX'+inttostr(Idx)+ ' ON '+Tablas.Items[i].Text+' ('+Indice+');'); Memo1.Lines.Add(''); end; end; end; end else begin Memo1.Lines.Add(');'); Memo1.Lines.Add(''); end; end; end;
Espero te sirva
#38
Posted 02 December 2008 - 06:07 PM


Saludos.
#39
Posted 03 December 2008 - 07:12 PM

[img width=640 height=461]http://img185.imageshack.us/img185/9977/mt4zm1.jpg[/img]
Saludos.
#40
Posted 03 December 2008 - 07:20 PM

