Changeset: 62 Changeset: 62 Soporte DBF en desarrollo

This commit is contained in:
fernando
2013-12-08 15:46:15 +01:00
parent bf2efcfa8b
commit fd84a0915e
5 changed files with 126 additions and 33 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -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,