Changeset: 62 Changeset: 62 Soporte DBF en desarrollo
This commit is contained in:
Binary file not shown.
Binary file not shown.
BIN
foxbin2prg.pjt
BIN
foxbin2prg.pjt
Binary file not shown.
BIN
foxbin2prg.pjx
BIN
foxbin2prg.pjx
Binary file not shown.
121
foxbin2prg.prg
121
foxbin2prg.prg
@@ -50,6 +50,7 @@
|
|||||||
* 06/12/2013 FDBOZZO v1.10 Arreglo del bug de mezcla de m<>todos de una clase con la siguiente
|
* 06/12/2013 FDBOZZO v1.10 Arreglo del bug de mezcla de m<>todos de una clase con la siguiente
|
||||||
* 07/12/2013 FDBOZZO v1.11 Arreglo del bug de _amembers detectado por Edgar K.con la clase BlowFish.vcx (http://www.tortugaproductiva.galeon.com/docs/blowfish/index.html)
|
* 07/12/2013 FDBOZZO v1.11 Arreglo del bug de _amembers detectado por Edgar K.con la clase BlowFish.vcx (http://www.tortugaproductiva.galeon.com/docs/blowfish/index.html)
|
||||||
* 07/12/2013 FDBOZZO v1.12 Agregado soporte preliminar de conversi<73>n de reportes y etiquetas (FRX/LBX)
|
* 07/12/2013 FDBOZZO v1.12 Agregado soporte preliminar de conversi<73>n de reportes y etiquetas (FRX/LBX)
|
||||||
|
* 08/12/2013 FDBOZZO v1.14 Agregado soporte preliminar de conversi<73>n de tablas, <20>ndices y bases de datos (DBF,CDX,DBC)
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------------------------------
|
*---------------------------------------------------------------------------------------------------
|
||||||
* TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)
|
* TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)
|
||||||
@@ -362,7 +363,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias
|
l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias
|
||||||
lFileMode = .F.
|
lFileMode = .F.
|
||||||
nClassTimeStamp = ''
|
nClassTimeStamp = ''
|
||||||
n_FB2PRG_Version = 1.12
|
n_FB2PRG_Version = 1.14
|
||||||
o_Conversor = NULL
|
o_Conversor = NULL
|
||||||
c_VC2 = 'VC2'
|
c_VC2 = 'VC2'
|
||||||
c_SC2 = 'SC2'
|
c_SC2 = 'SC2'
|
||||||
@@ -443,6 +444,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_LB2 )
|
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_LB2 )
|
||||||
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' )
|
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' )
|
||||||
|
|
||||||
|
CASE JUSTEXT(THIS.c_InputFile) = 'DBF'
|
||||||
|
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_DB2 )
|
||||||
|
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_dbf_a_prg' )
|
||||||
|
|
||||||
CASE JUSTEXT(THIS.c_InputFile) = THIS.c_VC2
|
CASE JUSTEXT(THIS.c_InputFile) = THIS.c_VC2
|
||||||
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'VCX' )
|
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'VCX' )
|
||||||
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' )
|
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' )
|
||||||
@@ -463,6 +468,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
|||||||
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'LBX' )
|
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'LBX' )
|
||||||
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' )
|
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' )
|
||||||
|
|
||||||
|
CASE JUSTEXT(THIS.c_InputFile) = THIS.c_DB2
|
||||||
|
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'DBF' )
|
||||||
|
THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dfb' )
|
||||||
|
|
||||||
OTHERWISE
|
OTHERWISE
|
||||||
ERROR 'El archivo [' + THIS.c_InputFile + '] no est<73> soportado'
|
ERROR 'El archivo [' + THIS.c_InputFile + '] no est<73> soportado'
|
||||||
|
|
||||||
@@ -950,6 +959,7 @@ DEFINE CLASS c_conversor_base AS SESSION
|
|||||||
|
|
||||||
DO CASE
|
DO CASE
|
||||||
CASE JUSTEXT( THIS.c_OutputFile ) = lcExt_X
|
CASE JUSTEXT( THIS.c_OutputFile ) = lcExt_X
|
||||||
|
*-- VCX, SCX, FRX, LBX, MNX
|
||||||
IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_X) )
|
IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_X) )
|
||||||
THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_X) + '/' + lcExt_T )
|
THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_X) + '/' + lcExt_T )
|
||||||
|
|
||||||
@@ -960,6 +970,24 @@ DEFINE CLASS c_conversor_base AS SESSION
|
|||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
CASE JUSTEXT( THIS.c_OutputFile ) = 'DBF'
|
||||||
|
*-- DBF
|
||||||
|
lcExt_X = 'DBF'
|
||||||
|
lcExt_T = 'FPT'
|
||||||
|
IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_X) )
|
||||||
|
THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,lcExt_X) + '/' + lcExt_T )
|
||||||
|
|
||||||
|
COPY FILE (FORCEEXT(THIS.c_OutputFile,lcExt_X)) TO (FORCEEXT(THIS.c_OutputFile, lcExt_X + lcNext_Bak))
|
||||||
|
|
||||||
|
IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_T) )
|
||||||
|
COPY FILE (FORCEEXT(THIS.c_OutputFile,lcExt_T)) TO (FORCEEXT(THIS.c_OutputFile,lcExt_T + lcNext_Bak))
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF FILE( FORCEEXT(THIS.c_OutputFile,'CDX') )
|
||||||
|
COPY FILE (FORCEEXT(THIS.c_OutputFile,'CDX')) TO (FORCEEXT(THIS.c_OutputFile,'CDX' + lcNext_Bak))
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
|
||||||
OTHERWISE
|
OTHERWISE
|
||||||
ERROR 'Tipo de archivo [' + JUSTFNAME(THIS.c_OutputFile) + '] no soportado para backup!'
|
ERROR 'Tipo de archivo [' + JUSTFNAME(THIS.c_OutputFile) + '] no soportado para backup!'
|
||||||
|
|
||||||
@@ -4678,7 +4706,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
|
|||||||
#ENDIF
|
#ENDIF
|
||||||
|
|
||||||
TRY
|
TRY
|
||||||
LOCAL llBloqueEncontrado, lcValue, loEx as Exception
|
LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION
|
||||||
|
|
||||||
IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I
|
IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I
|
||||||
llBloqueEncontrado = .T.
|
llBloqueEncontrado = .T.
|
||||||
@@ -4709,8 +4737,8 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
CATCH TO loEx
|
CATCH TO loEx
|
||||||
IF loEx.ErrorNo = 1470 && Incorrect property name.
|
IF loEx.ERRORNO = 1470 && Incorrect property name.
|
||||||
loEx.UserValue = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
|
loEx.USERVALUE = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
IF THIS.l_Debug AND _VFP.STARTMODE = 0
|
IF THIS.l_Debug AND _VFP.STARTMODE = 0
|
||||||
@@ -4815,11 +4843,11 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
|
|||||||
*-- ARREGLO ALGUNOS VALORES CAMBIADOS AL TEXTUALIZAR
|
*-- ARREGLO ALGUNOS VALORES CAMBIADOS AL TEXTUALIZAR
|
||||||
DO CASE
|
DO CASE
|
||||||
CASE loReg.ObjType == "1"
|
CASE loReg.ObjType == "1"
|
||||||
loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.tag )
|
loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.TAG )
|
||||||
CASE loReg.ObjType == "25"
|
CASE loReg.ObjType == "25"
|
||||||
loReg.TAG = SUBSTR(loReg.TAG,3)
|
loReg.TAG = SUBSTR(loReg.TAG,3)
|
||||||
OTHERWISE
|
OTHERWISE
|
||||||
loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.tag )
|
loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.TAG )
|
||||||
ENDCASE
|
ENDCASE
|
||||||
|
|
||||||
CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag2' )
|
CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag2' )
|
||||||
@@ -4840,7 +4868,7 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
|
|||||||
ENDWITH && THIS
|
ENDWITH && THIS
|
||||||
|
|
||||||
I = I - 1
|
I = I - 1
|
||||||
toReport.Add( loReg )
|
toReport.ADD( loReg )
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
CATCH TO loEx
|
CATCH TO loEx
|
||||||
@@ -6402,7 +6430,7 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass )
|
THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass )
|
||||||
|
|
||||||
THIS.write_Define_Class_COMMENTS( @loRegClass )
|
THIS.write_DEFINE_CLASS_COMMENTS( @loRegClass )
|
||||||
|
|
||||||
THIS.write_METADATA( @loRegClass )
|
THIS.write_METADATA( @loRegClass )
|
||||||
|
|
||||||
@@ -6556,7 +6584,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
|
|||||||
|
|
||||||
THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass )
|
THIS.write_DEFINE_CLASS( @la_NombresObjsOle, @loRegClass )
|
||||||
|
|
||||||
THIS.write_Define_Class_COMMENTS( @loRegClass )
|
THIS.write_DEFINE_CLASS_COMMENTS( @loRegClass )
|
||||||
|
|
||||||
THIS.write_METADATA( @loRegClass )
|
THIS.write_METADATA( @loRegClass )
|
||||||
|
|
||||||
@@ -6971,19 +6999,19 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg
|
|||||||
USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN_0
|
USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN_0
|
||||||
|
|
||||||
*-- Header
|
*-- Header
|
||||||
LOCATE FOR objType = 1
|
LOCATE FOR ObjType = 1
|
||||||
IF FOUND()
|
IF FOUND()
|
||||||
SCATTER MEMO NAME loRegCab
|
SCATTER MEMO NAME loRegCab
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
*-- Dataenvironment
|
*-- Dataenvironment
|
||||||
LOCATE FOR objType = 25
|
LOCATE FOR ObjType = 25
|
||||||
IF FOUND()
|
IF FOUND()
|
||||||
SCATTER MEMO NAME loRegDataEnv
|
SCATTER MEMO NAME loRegDataEnv
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
*-- Cursor1 (<28>puede haber m<>s de 1 cursor?)
|
*-- Cursor1 (<28>puede haber m<>s de 1 cursor?)
|
||||||
LOCATE FOR objType = 26
|
LOCATE FOR ObjType = 26
|
||||||
IF FOUND()
|
IF FOUND()
|
||||||
SCATTER MEMO NAME loRegCur
|
SCATTER MEMO NAME loRegCur
|
||||||
ENDIF
|
ENDIF
|
||||||
@@ -6991,13 +7019,13 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg
|
|||||||
IF THIS.l_ReportSort_Enabled
|
IF THIS.l_ReportSort_Enabled
|
||||||
*-- ORDENADO
|
*-- ORDENADO
|
||||||
SELECT * FROM TABLABIN_0 ;
|
SELECT * FROM TABLABIN_0 ;
|
||||||
WHERE objType NOT IN (1,25,26) ;
|
WHERE ObjType NOT IN (1,25,26) ;
|
||||||
ORDER BY vpos,hpos ;
|
ORDER BY vpos,hpos ;
|
||||||
INTO CURSOR TABLABIN READWRITE
|
INTO CURSOR TABLABIN READWRITE
|
||||||
ELSE
|
ELSE
|
||||||
*-- SIN ORDENAR (S<>lo para poder comparar con el original)
|
*-- SIN ORDENAR (S<>lo para poder comparar con el original)
|
||||||
SELECT * FROM TABLABIN_0 ;
|
SELECT * FROM TABLABIN_0 ;
|
||||||
WHERE objType NOT IN (1,25,26) ;
|
WHERE ObjType NOT IN (1,25,26) ;
|
||||||
INTO CURSOR TABLABIN
|
INTO CURSOR TABLABIN
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
@@ -7048,6 +7076,71 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg
|
|||||||
ENDDEFINE
|
ENDDEFINE
|
||||||
|
|
||||||
|
|
||||||
|
*******************************************************************************************************************
|
||||||
|
DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg
|
||||||
|
#IF .F.
|
||||||
|
LOCAL THIS AS c_conversor_dbf_a_prg OF 'FOXBIN2PRG.PRG'
|
||||||
|
#ENDIF
|
||||||
|
*_MEMBERDATA = [<VFPData>] ;
|
||||||
|
+ [<memberdata name="convertir" type="method" display="Convertir"/>] ;
|
||||||
|
+ [</VFPData>]
|
||||||
|
|
||||||
|
|
||||||
|
*******************************************************************************************************************
|
||||||
|
PROCEDURE Convertir
|
||||||
|
LPARAMETERS toModulo, toEx AS EXCEPTION
|
||||||
|
DODEFAULT( @toModulo, @toEx )
|
||||||
|
|
||||||
|
TRY
|
||||||
|
LOCAL lnCodError, loRegCab, loRegDataEnv, loRegCur, loRegObj, lnMethodCount, laMethods(1), laCode(1), laProtected(1) ;
|
||||||
|
, laPropsAndValues(1), laPropsAndComments(1), lnLastClass, lnRecno, lcMethods, lcObjName, la_NombresObjsOle(1)
|
||||||
|
STORE 0 TO lnCodError, lnLastClass
|
||||||
|
STORE '' TO laMethods(1), laCode(1), laProtected(1), laPropsAndComments(1)
|
||||||
|
STORE NULL TO loRegObj, loRegCab, loRegDataEnv, loRegCur
|
||||||
|
|
||||||
|
USE (THIS.c_InputFile) SHARED NOUPDATE ALIAS TABLABIN_0
|
||||||
|
|
||||||
|
*-- Header
|
||||||
|
THIS.write_DBF_HEADER()
|
||||||
|
|
||||||
|
*-- Fields
|
||||||
|
THIS.write_DBF_FIELDS( @loRegObj )
|
||||||
|
|
||||||
|
*-- Indexes
|
||||||
|
THIS.write_DBF_INDEXES( @loRegCur )
|
||||||
|
|
||||||
|
|
||||||
|
loRegObj = NULL
|
||||||
|
USE IN (SELECT("TABLABIN_0"))
|
||||||
|
|
||||||
|
*-- Genero el DB2
|
||||||
|
IF THIS.l_Test
|
||||||
|
toModulo = C_FB2PRG_CODE
|
||||||
|
ELSE
|
||||||
|
IF STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
|
||||||
|
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
|
CATCH TO toEx
|
||||||
|
IF THIS.l_Debug AND _VFP.STARTMODE = 0
|
||||||
|
SET STEP ON
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
THROW
|
||||||
|
|
||||||
|
FINALLY
|
||||||
|
USE IN (SELECT("TABLABIN"))
|
||||||
|
USE IN (SELECT("TABLABIN_0"))
|
||||||
|
|
||||||
|
ENDTRY
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
ENDPROC
|
||||||
|
ENDDEFINE
|
||||||
|
|
||||||
|
|
||||||
*******************************************************************************************************************
|
*******************************************************************************************************************
|
||||||
DEFINE CLASS CL_BASE AS CUSTOM
|
DEFINE CLASS CL_BASE AS CUSTOM
|
||||||
*-- Propiedades. CLASS,
|
*-- Propiedades. CLASS,
|
||||||
|
|||||||
Reference in New Issue
Block a user