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
|
||||
* 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)
|
||||
* 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)
|
||||
@@ -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
|
||||
lFileMode = .F.
|
||||
nClassTimeStamp = ''
|
||||
n_FB2PRG_Version = 1.12
|
||||
n_FB2PRG_Version = 1.14
|
||||
o_Conversor = NULL
|
||||
c_VC2 = 'VC2'
|
||||
c_SC2 = 'SC2'
|
||||
@@ -443,6 +444,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
|
||||
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_LB2 )
|
||||
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
|
||||
THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, '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.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
|
||||
ERROR 'El archivo [' + THIS.c_InputFile + '] no est<73> soportado'
|
||||
|
||||
@@ -950,6 +959,7 @@ DEFINE CLASS c_conversor_base AS SESSION
|
||||
|
||||
DO CASE
|
||||
CASE JUSTEXT( THIS.c_OutputFile ) = lcExt_X
|
||||
*-- VCX, SCX, FRX, LBX, MNX
|
||||
IF FILE( FORCEEXT(THIS.c_OutputFile,lcExt_X) )
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
llBloqueEncontrado = .T.
|
||||
@@ -4709,8 +4737,8 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
|
||||
ENDIF
|
||||
|
||||
CATCH TO loEx
|
||||
IF loEx.ErrorNo = 1470 && Incorrect property name.
|
||||
loEx.UserValue = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
|
||||
IF loEx.ERRORNO = 1470 && Incorrect property name.
|
||||
loEx.USERVALUE = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
|
||||
ENDIF
|
||||
|
||||
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
|
||||
DO CASE
|
||||
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"
|
||||
loReg.TAG = SUBSTR(loReg.TAG,3)
|
||||
OTHERWISE
|
||||
loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.tag )
|
||||
loReg.TAG = THIS.decode_SpecialCodes_1_31( loReg.TAG )
|
||||
ENDCASE
|
||||
|
||||
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
|
||||
|
||||
I = I - 1
|
||||
toReport.Add( loReg )
|
||||
toReport.ADD( loReg )
|
||||
ENDIF
|
||||
|
||||
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_COMMENTS( @loRegClass )
|
||||
THIS.write_DEFINE_CLASS_COMMENTS( @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_COMMENTS( @loRegClass )
|
||||
THIS.write_DEFINE_CLASS_COMMENTS( @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
|
||||
|
||||
*-- Header
|
||||
LOCATE FOR objType = 1
|
||||
LOCATE FOR ObjType = 1
|
||||
IF FOUND()
|
||||
SCATTER MEMO NAME loRegCab
|
||||
ENDIF
|
||||
|
||||
*-- Dataenvironment
|
||||
LOCATE FOR objType = 25
|
||||
LOCATE FOR ObjType = 25
|
||||
IF FOUND()
|
||||
SCATTER MEMO NAME loRegDataEnv
|
||||
ENDIF
|
||||
|
||||
*-- Cursor1 (<28>puede haber m<>s de 1 cursor?)
|
||||
LOCATE FOR objType = 26
|
||||
LOCATE FOR ObjType = 26
|
||||
IF FOUND()
|
||||
SCATTER MEMO NAME loRegCur
|
||||
ENDIF
|
||||
@@ -6991,13 +7019,13 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg
|
||||
IF THIS.l_ReportSort_Enabled
|
||||
*-- ORDENADO
|
||||
SELECT * FROM TABLABIN_0 ;
|
||||
WHERE objType NOT IN (1,25,26) ;
|
||||
WHERE ObjType NOT IN (1,25,26) ;
|
||||
ORDER BY vpos,hpos ;
|
||||
INTO CURSOR TABLABIN READWRITE
|
||||
ELSE
|
||||
*-- SIN ORDENAR (S<>lo para poder comparar con el original)
|
||||
SELECT * FROM TABLABIN_0 ;
|
||||
WHERE objType NOT IN (1,25,26) ;
|
||||
WHERE ObjType NOT IN (1,25,26) ;
|
||||
INTO CURSOR TABLABIN
|
||||
ENDIF
|
||||
|
||||
@@ -7048,6 +7076,71 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg
|
||||
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
|
||||
*-- Propiedades. CLASS,
|
||||
|
||||
Reference in New Issue
Block a user