Changeset: 80 Changeset: 80 Desarrollo ofi DBC

This commit is contained in:
fernando
2013-12-12 17:36:47 +01:00
parent 07c914ab99
commit f7a2e9103d
5 changed files with 176 additions and 462 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -156,6 +156,8 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro
#DEFINE C_LEN_CDX_F LEN(C_CDX_F) #DEFINE C_LEN_CDX_F LEN(C_CDX_F)
#DEFINE C_LEN_INDEX_I LEN(C_INDEX_I) #DEFINE C_LEN_INDEX_I LEN(C_INDEX_I)
#DEFINE C_LEN_INDEX_F LEN(C_INDEX_F) #DEFINE C_LEN_INDEX_F LEN(C_INDEX_F)
#DEFINE C_DATABASE_I '<DATABASE>'
#DEFINE C_DATABASE_F '</DATABASE>'
#DEFINE C_TABLE_I '<TABLE>' #DEFINE C_TABLE_I '<TABLE>'
#DEFINE C_TABLE_F '</TABLE>' #DEFINE C_TABLE_F '</TABLE>'
#DEFINE C_TABLES_I '<TABLES>' #DEFINE C_TABLES_I '<TABLES>'
@@ -5308,7 +5310,6 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE identificarBloquesDeCodigo PROCEDURE identificarBloquesDeCodigo
LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toTable
*-------------------------------------------------------------------------------------------------------------- *--------------------------------------------------------------------------------------------------------------
* taCodeLines (!@ IN ) El array con las l<>neas del c<>digo donde buscar * taCodeLines (!@ IN ) El array con las l<>neas del c<>digo donde buscar
* tnCodeLines (!@ IN ) Cantidad de l<>neas de c<>digo * tnCodeLines (!@ IN ) Cantidad de l<>neas de c<>digo
@@ -5316,6 +5317,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
* tnBloquesExclusion (?@ IN ) Sin uso * tnBloquesExclusion (?@ IN ) Sin uso
* toTable (?@ OUT) Objeto con toda la informaci<63>n de la tabla analizada * toTable (?@ OUT) Objeto con toda la informaci<63>n de la tabla analizada
*-------------------------------------------------------------------------------------------------------------- *--------------------------------------------------------------------------------------------------------------
LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toTable
EXTERNAL ARRAY taCodeLines, taBloquesExclusion EXTERNAL ARRAY taCodeLines, taBloquesExclusion
#IF .F. #IF .F.
@@ -5386,13 +5388,16 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE Convertir PROCEDURE Convertir
LPARAMETERS toModulo, toEx AS EXCEPTION LPARAMETERS toDatabase, toEx AS EXCEPTION
DODEFAULT( @toModulo, @toEx ) DODEFAULT( @toDatabase, @toEx )
#IF .F.
LOCAL toDatabase AS CL_DATABASE OF 'FOXBIN2PRG.PRG'
#ENDIF
TRY TRY
LOCAL lnCodError, loEx AS EXCEPTION, loReg, lcLine, laCodeLines(1), lnCodeLines, lnFB2P_Version, lcSourceFile ; LOCAL lnCodError, loEx AS EXCEPTION, loReg, lcLine, laCodeLines(1), lnCodeLines, lnFB2P_Version, lcSourceFile ;
, laBloquesExclusion(1,2), lnBloquesExclusion, I ; , laBloquesExclusion(1,2), lnBloquesExclusion, I
, loReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
STORE 0 TO lnCodError, lnCodeLines, lnFB2P_Version STORE 0 TO lnCodError, lnCodeLines, lnFB2P_Version
STORE '' TO lcLine, lcSourceFile STORE '' TO lcLine, lcSourceFile
STORE NULL TO loReg, toModulo STORE NULL TO loReg, toModulo
@@ -5406,9 +5411,9 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
*THIS.createTable() *THIS.createTable()
*-- Identifico el inicio/fin de bloque, definici<63>n, cabecera y cuerpo del reporte *-- Identifico el inicio/fin de bloque, definici<63>n, cabecera y cuerpo del reporte
THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @loReport ) THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @toDatabase )
THIS.escribirArchivoBin( @loReport ) THIS.escribirArchivoBin( @toDatabase )
CATCH TO loEx CATCH TO loEx
@@ -5428,62 +5433,102 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE escribirArchivoBin PROCEDURE escribirArchivoBin
LPARAMETERS toReport LPARAMETERS toDatabase
*-- ----------------------------------------------------------------------------------------------------------- *-- -----------------------------------------------------------------------------------------------------------
#IF .F. #IF .F.
LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' LOCAL toDatabase AS CL_DATABASE OF 'FOXBIN2PRG.PRG'
#ENDIF #ENDIF
TRY TRY
LOCAL loReg, I, lcFieldType, lnFieldLen, lnFieldDec, lnNumCampo, laFieldTypes(1,18) ; LOCAL loConnection AS CL_DBC_CONNECTION OF 'FOXBIN2PRG.PRG'
, luValor, lnCodError, loEx AS EXCEPTION LOCAL loTable AS CL_DBC_TABLE OF 'FOXBIN2PRG.PRG'
SELECT TABLABIN LOCAL loView AS CL_DBC_VIEW OF 'FOXBIN2PRG.PRG'
AFIELDS( laFieldTypes ) LOCAL loRelation AS CL_DBC_RELATION OF 'FOXBIN2PRG.PRG'
LOCAL lcCreateTable, lcLongDec, lcFieldDef, lcIndex, ldLastUpdate
STORE '' TO lcIndex, lcFieldDef
*-- Agrego los registros lcCreateTable = 'CREATE TABLE "' + THIS.c_OutputFile + '" FREE CodePage=' + toTable._CodePage + ' ('
FOR EACH loReg IN toReport FOXOBJECT
*-- Ajuste de los tipos de dato *-- Conformo los campos
FOR I = 1 TO AMEMBERS(laProps, loReg, 0) EXIT
lnNumCampo = ASCAN( laFieldTypes, laProps(I), 1, -1, 1, 1+2+4+8 )
toDatabase.DBWriteObjects( THIS.c_OutputFile )
FOR EACH loConnection IN toDatabase._Connections FOXOBJECT
lcLongDec = ''
IF lnNumCampo = 0 *-- Nombre, Tipo
ERROR 'No se encontr<74> el campo [' + laProps(I) + '] en la estructura del archivo ' + DBF("TABLABIN") lcFieldDef = lcFieldDef + ', ' + loField._Name + ' ' + loField._Type
*-- Longitud
IF INLIST( loField._Type, 'C', 'N', 'F', 'Q', 'V' )
lcLongDec = lcLongDec + '(' + loField._Width
ENDIF
*-- Decimales
IF INLIST( loField._Type, 'B', 'N', 'F' ) AND loField._Decimals > '0'
IF EMPTY(lcLongDec)
lcLongDec = lcLongDec + '('
ELSE
lcLongDec = lcLongDec + ','
ENDIF ENDIF
lcLongDec = lcLongDec + loField._Decimals
ENDIF
lcFieldType = laFieldTypes(lnNumCampo,2) IF NOT EMPTY(lcLongDec)
lnFieldLen = laFieldTypes(lnNumCampo,3) lcLongDec = lcLongDec + ')'
lnFieldDec = laFieldTypes(lnNumCampo,4) ENDIF
luValor = EVALUATE('loReg.' + laProps(I))
DO CASE lcFieldDef = lcFieldDef + lcLongDec
CASE INLIST(lcFieldType, 'B') && Double
ADDPROPERTY( loReg, laProps(I), CAST( luValor AS &lcFieldType. (lnFieldPrec) ) )
CASE INLIST(lcFieldType, 'F', 'N', 'Y') && Float, Numeric, Currency *-- Null
ADDPROPERTY( loReg, laProps(I), CAST( luValor AS &lcFieldType. (lnFieldLen, lnFieldDec) ) ) lcFieldDef = lcFieldDef + IIF( loField._Null = '.T.', ' NULL', ' NOT NULL' )
CASE INLIST(lcFieldType, 'W', 'G', 'M', 'Q', 'V', 'C') && Blob, General, Memo, Varbinary, Varchar, Character *-- NoCPTran
ADDPROPERTY( loReg, laProps(I), luValor ) IF loField._NoCPTran = '.T.'
lcFieldDef = lcFieldDef + ' NOCPTRAN'
ENDIF
OTHERWISE && Dem<65>s tipos *-- AutoInc
ADDPROPERTY( loReg, laProps(I), CAST( luValor AS &lcFieldType. (lnFieldLen) ) ) IF loField._AutoInc_NextVal <> '0'
lcFieldDef = lcFieldDef + ' AUTOINC NEXTVAL ' + loField._AutoInc_NextVal + ' STEP ' + loField._AutoInc_Step
ENDIF
ENDCASE loField = NULL
ENDFOR
INSERT INTO TABLABIN FROM NAME loReg
loReg = NULL
ENDFOR ENDFOR
USE IN (SELECT("TABLABIN")) lcCreateTable = lcCreateTable + SUBSTR(lcFieldDef,3) + ')'
*STRTOFILE(lcCreateTable,'CreateTable.txt')
&lcCreateTable.
IF THIS.c_Type = 'FRX' *-- Regenero los <20>ndices
COMPILE REPORT (THIS.c_OutputFile) FOR EACH loIndex IN toTable._Indexes FOXOBJECT
ELSE lcIndex = 'INDEX ON ' + loIndex._Key + ' TAG ' + loIndex._TagName
COMPILE LABEL (THIS.c_OutputFile)
ENDIF IF loIndex._TagType = 'BINARY'
lcIndex = lcIndex + ' BINARY'
ELSE
lcIndex = lcIndex + ' COLLATE "' + loIndex._Collate + '"'
IF NOT EMPTY(loIndex._Filter)
lcIndex = lcIndex + ' FOR ' + loIndex._Filter
ENDIF
lcIndex = lcIndex + ' ' + loIndex._Order
IF loIndex._TagType <> 'REGULAR'
*-- Si es PRIMARY lo cambio a CANDIDATE y luego lo recodifico
lcIndex = lcIndex + ' ' + STRTRAN( loIndex._TagType, 'PRIMARY', 'CANDIDATE' )
ENDIF
ENDIF
*STRTOFILE( lcIndex, 'index_' + loIndex._TagName + '.txt' )
&lcIndex.
ENDFOR
USE IN (SELECT(JUSTSTEM(THIS.c_OutputFile)))
CATCH TO loEx CATCH TO loEx
@@ -5506,7 +5551,6 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE identificarBloquesDeCodigo PROCEDURE identificarBloquesDeCodigo
LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toReport
*-------------------------------------------------------------------------------------------------------------- *--------------------------------------------------------------------------------------------------------------
* taCodeLines (!@ IN ) El array con las l<>neas del c<>digo donde buscar * taCodeLines (!@ IN ) El array con las l<>neas del c<>digo donde buscar
* tnCodeLines (!@ IN ) Cantidad de l<>neas de c<>digo * tnCodeLines (!@ IN ) Cantidad de l<>neas de c<>digo
@@ -5517,21 +5561,22 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
* NOTA: * NOTA:
* Como identificador se usa el nombre de clase o de procedimiento, seg<65>n corresponda. * Como identificador se usa el nombre de clase o de procedimiento, seg<65>n corresponda.
*-------------------------------------------------------------------------------------------------------------- *--------------------------------------------------------------------------------------------------------------
LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toDatabase
EXTERNAL ARRAY taCodeLines, taBloquesExclusion EXTERNAL ARRAY taCodeLines, taBloquesExclusion
#IF .F. #IF .F.
LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' LOCAL toDatabase AS CL_DATABASE OF 'FOXBIN2PRG.PRG'
#ENDIF #ENDIF
TRY TRY
LOCAL I, lc_Comentario, lcLine, llFoxBin2Prg_Completed LOCAL I, lc_Comentario, lcLine, llFoxBin2Prg_Completed, llBloqueDatabase_Completed
STORE 0 TO I STORE 0 TO I
THIS.c_Type = UPPER(JUSTEXT(THIS.c_OutputFile)) THIS.c_Type = UPPER(JUSTEXT(THIS.c_OutputFile))
IF tnCodeLines > 1 IF tnCodeLines > 1
toReport = NULL toDatabase = NULL
toReport = CREATEOBJECT('CL_REPORT') toDatabase = CREATEOBJECT('CL_DATABASE')
WITH THIS WITH THIS
FOR I = 1 TO tnCodeLines FOR I = 1 TO tnCodeLines
@@ -5542,10 +5587,11 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
ENDIF ENDIF
DO CASE DO CASE
CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toReport, @lcLine, @taCodeLines, @I, tnCodeLines ) CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toDatabase, @lcLine, @taCodeLines, @I, tnCodeLines )
llFoxBin2Prg_Completed = .T. llFoxBin2Prg_Completed = .T.
CASE .analizarBloque_DATABASE( toReport, @lcLine, @taCodeLines, @I, tnCodeLines ) CASE NOT llBloqueDatabase_Completed AND toDatabase.analizarBloque( @lcLine, @taCodeLines, @I, tnCodeLines )
llBloqueDatabase_Completed = .T.
ENDCASE ENDCASE
ENDFOR ENDFOR
@@ -5565,369 +5611,6 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
ENDPROC ENDPROC
************************************************************************************************
PROCEDURE add_Table
LPARAMETERS tcName
tcName = RTRIM(tcName)
THIS._Tables.ADD( CREATEOBJECT("CL_TABLE"), tcName )
RETURN THIS._Tables( tcName )
ENDPROC
*******************************************************************************************************************
PROCEDURE analizarBloque_DATABASE
*------------------------------------------------------
*-- Analiza el bloque <DATABASE>
*------------------------------------------------------
LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName
#IF .F.
LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
#ENDIF
TRY
LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION
IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I
llBloqueEncontrado = .T.
IF C_DATA_F $ tcLine
lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ENDIF
*-- Tomo la primera parte del valor
lcValue = STREXTRACT( tcLine, C_DATA_I )
*-- Recorro las fracciones del valor
FOR I = I + 1 TO tnCodeLines
tcLine = taCodeLines(I)
IF C_DATA_F $ tcLine && Fin del valor
lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ELSE && Otra fracci<63>n del valor
lcValue = lcValue + CR_LF + tcLine
ENDIF
ENDFOR
ENDIF
CATCH TO loEx
IF loEx.ERRORNO = 1470 && Incorrect property name.
loEx.USERVALUE = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
ENDIF
IF THIS.l_Debug AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
ENDTRY
RETURN llBloqueEncontrado
ENDPROC
*******************************************************************************************************************
PROCEDURE analizarBloque_TABLES
*------------------------------------------------------
*-- Analiza el bloque <TABLES>
*------------------------------------------------------
LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName
#IF .F.
LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
#ENDIF
TRY
LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION
IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I
llBloqueEncontrado = .T.
IF C_DATA_F $ tcLine
lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ENDIF
*-- Tomo la primera parte del valor
lcValue = STREXTRACT( tcLine, C_DATA_I )
*-- Recorro las fracciones del valor
FOR I = I + 1 TO tnCodeLines
tcLine = taCodeLines(I)
IF C_DATA_F $ tcLine && Fin del valor
lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ELSE && Otra fracci<63>n del valor
lcValue = lcValue + CR_LF + tcLine
ENDIF
ENDFOR
ENDIF
CATCH TO loEx
IF loEx.ERRORNO = 1470 && Incorrect property name.
loEx.USERVALUE = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
ENDIF
IF THIS.l_Debug AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
ENDTRY
RETURN llBloqueEncontrado
ENDPROC
*******************************************************************************************************************
PROCEDURE analizarBloque_TABLE_FIELDS
*------------------------------------------------------
*-- Analiza el bloque <FIELDS>
*------------------------------------------------------
LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName
#IF .F.
LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
#ENDIF
TRY
LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION
IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I
llBloqueEncontrado = .T.
IF C_DATA_F $ tcLine
lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ENDIF
*-- Tomo la primera parte del valor
lcValue = STREXTRACT( tcLine, C_DATA_I )
*-- Recorro las fracciones del valor
FOR I = I + 1 TO tnCodeLines
tcLine = taCodeLines(I)
IF C_DATA_F $ tcLine && Fin del valor
lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ELSE && Otra fracci<63>n del valor
lcValue = lcValue + CR_LF + tcLine
ENDIF
ENDFOR
ENDIF
CATCH TO loEx
IF loEx.ERRORNO = 1470 && Incorrect property name.
loEx.USERVALUE = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
ENDIF
IF THIS.l_Debug AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
ENDTRY
RETURN llBloqueEncontrado
ENDPROC
*******************************************************************************************************************
PROCEDURE analizarBloque_VIEWS
*------------------------------------------------------
*-- Analiza el bloque <VIEWS>
*------------------------------------------------------
LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName
#IF .F.
LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
#ENDIF
TRY
LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION
IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I
llBloqueEncontrado = .T.
IF C_DATA_F $ tcLine
lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ENDIF
*-- Tomo la primera parte del valor
lcValue = STREXTRACT( tcLine, C_DATA_I )
*-- Recorro las fracciones del valor
FOR I = I + 1 TO tnCodeLines
tcLine = taCodeLines(I)
IF C_DATA_F $ tcLine && Fin del valor
lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ELSE && Otra fracci<63>n del valor
lcValue = lcValue + CR_LF + tcLine
ENDIF
ENDFOR
ENDIF
CATCH TO loEx
IF loEx.ERRORNO = 1470 && Incorrect property name.
loEx.USERVALUE = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
ENDIF
IF THIS.l_Debug AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
ENDTRY
RETURN llBloqueEncontrado
ENDPROC
*******************************************************************************************************************
PROCEDURE analizarBloque_CONNECTIONS
*------------------------------------------------------
*-- Analiza el bloque <CONNECTIONS>
*------------------------------------------------------
LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName
#IF .F.
LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
#ENDIF
TRY
LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION
IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I
llBloqueEncontrado = .T.
IF C_DATA_F $ tcLine
lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ENDIF
*-- Tomo la primera parte del valor
lcValue = STREXTRACT( tcLine, C_DATA_I )
*-- Recorro las fracciones del valor
FOR I = I + 1 TO tnCodeLines
tcLine = taCodeLines(I)
IF C_DATA_F $ tcLine && Fin del valor
lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ELSE && Otra fracci<63>n del valor
lcValue = lcValue + CR_LF + tcLine
ENDIF
ENDFOR
ENDIF
CATCH TO loEx
IF loEx.ERRORNO = 1470 && Incorrect property name.
loEx.USERVALUE = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
ENDIF
IF THIS.l_Debug AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
ENDTRY
RETURN llBloqueEncontrado
ENDPROC
*******************************************************************************************************************
PROCEDURE analizarBloque_RELATIONS
*------------------------------------------------------
*-- Analiza el bloque <RELATIONS>
*------------------------------------------------------
LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName
#IF .F.
LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG'
#ENDIF
TRY
LOCAL llBloqueEncontrado, lcValue, loEx AS EXCEPTION
IF LEFT(tcLine, 1 + LEN(tcPropName) + 1 + 9) == '<' + tcPropName + '>' + C_DATA_I
llBloqueEncontrado = .T.
IF C_DATA_F $ tcLine
lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ENDIF
*-- Tomo la primera parte del valor
lcValue = STREXTRACT( tcLine, C_DATA_I )
*-- Recorro las fracciones del valor
FOR I = I + 1 TO tnCodeLines
tcLine = taCodeLines(I)
IF C_DATA_F $ tcLine && Fin del valor
lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F )
ADDPROPERTY( toReg, tcPropName, lcValue )
EXIT
ELSE && Otra fracci<63>n del valor
lcValue = lcValue + CR_LF + tcLine
ENDIF
ENDFOR
ENDIF
CATCH TO loEx
IF loEx.ERRORNO = 1470 && Incorrect property name.
loEx.USERVALUE = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
ENDIF
IF THIS.l_Debug AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
ENDTRY
RETURN llBloqueEncontrado
ENDPROC
ENDDEFINE && CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin ENDDEFINE && CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
@@ -9560,6 +9243,7 @@ DEFINE CLASS CL_DATABASE AS CL_CUS_BASE
_MEMBERDATA = [<VFPData>] ; _MEMBERDATA = [<VFPData>] ;
+ [<memberdata name="analizarbloque" display="analizarBloque"/>] ; + [<memberdata name="analizarbloque" display="analizarBloque"/>] ;
+ [<memberdata name="dbwriteobjects" display="DBWriteObjects"/>] ;
+ [<memberdata name="_name" display="_Name"/>] ; + [<memberdata name="_name" display="_Name"/>] ;
+ [<memberdata name="_comment" display="_Comment"/>] ; + [<memberdata name="_comment" display="_Comment"/>] ;
+ [<memberdata name="_version" display="_Version"/>] ; + [<memberdata name="_version" display="_Version"/>] ;
@@ -9585,7 +9269,7 @@ DEFINE CLASS CL_DATABASE AS CL_CUS_BASE
_DBCEvents = .F. _DBCEvents = .F.
_DBCEventFilename = '' _DBCEventFilename = ''
*-- Fields and Indexes *-- Sub-objects
_Connections = NULL _Connections = NULL
_Tables = NULL _Tables = NULL
_Views = NULL _Views = NULL
@@ -9596,8 +9280,10 @@ DEFINE CLASS CL_DATABASE AS CL_CUS_BASE
PROCEDURE INIT PROCEDURE INIT
DODEFAULT() DODEFAULT()
*-- *--
THIS._Fields = CREATEOBJECT("CL_DBF_FIELDS") THIS._Connections = CREATEOBJECT("CL_DBC_CONNECTIONS")
THIS._Indexes = CREATEOBJECT("CL_DBF_INDEXES") THIS._Tables = CREATEOBJECT("CL_DBC_TABLES")
THIS._Views = CREATEOBJECT("CL_DBC_VIEWS")
THIS._Relations = CREATEOBJECT("CL_DBC_RELATIONS")
ENDPROC ENDPROC
@@ -9606,12 +9292,14 @@ DEFINE CLASS CL_DATABASE AS CL_CUS_BASE
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
TRY TRY
LOCAL loFields AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' LOCAL loConnections AS CL_DBC_CONNECTIONS OF 'FOXBIN2PRG.PRG'
LOCAL loIndexes AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG' LOCAL loTables AS CL_DBC_TABLES OF 'FOXBIN2PRG.PRG'
LOCAL loViews AS CL_DBC_VIEWS OF 'FOXBIN2PRG.PRG'
LOCAL loRelations AS CL_DBC_RELATIONS OF 'FOXBIN2PRG.PRG'
LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION
STORE '' TO lcPropName, lcValue STORE '' TO lcPropName, lcValue
IF LEFT(tcLine, LEN(C_TABLE_I)) == C_TABLE_I IF LEFT(tcLine, LEN(C_DATABASE_I)) == C_DATABASE_I
llBloqueEncontrado = .T. llBloqueEncontrado = .T.
FOR I = I + 1 TO tnCodeLines FOR I = I + 1 TO tnCodeLines
@@ -9621,16 +9309,24 @@ DEFINE CLASS CL_DATABASE AS CL_CUS_BASE
CASE EMPTY( tcLine ) CASE EMPTY( tcLine )
LOOP LOOP
CASE C_TABLE_F $ tcLine && Fin CASE C_DATABASE_F $ tcLine && Fin
EXIT EXIT
CASE C_FIELDS_I $ tcLine CASE C_CONNECTIONS_I $ tcLine
loFields = THIS._Fields loConnections = THIS._Connections
loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) loConnections.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
CASE C_INDEXES_I $ tcLine CASE C_TABLES_I $ tcLine
loIndexes = THIS._Indexes loTables = THIS._Tables
loIndexes.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) loTables.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
CASE C_VIEWS_I $ tcLine
loViews = THIS._Views
loViews.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
CASE C_RELATIONS_I $ tcLine
loRelations = THIS._Relations
loRelations.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
OTHERWISE && Otro valor OTHERWISE && Otro valor
*-- Estructura a reconocer: *-- Estructura a reconocer:
@@ -9659,6 +9355,20 @@ DEFINE CLASS CL_DATABASE AS CL_CUS_BASE
ENDPROC ENDPROC
*******************************************************************************************************************
PROCEDURE DBSETPROP( cName, cType, cProperty, ePropertyValue )
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
ENDPROC
*******************************************************************************************************************
PROCEDURE DBWriteObjects
LPARAMETERS tc_OutputFile
ENDPROC
ENDDEFINE ENDDEFINE
@@ -9863,7 +9573,7 @@ DEFINE CLASS CL_DBC_TABLES AS CL_COL_BASE
CASE C_TABLE_I $ tcLine CASE C_TABLE_I $ tcLine
loTable = CREATEOBJECT("CL_DBC_TABLE") loTable = CREATEOBJECT("CL_DBC_TABLE")
loTable.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) loTable.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
THIS.ADD( loConnection, loConnection._Name ) THIS.ADD( loTable, loTable._Name )
OTHERWISE && Otro valor OTHERWISE && Otro valor
*-- No hay otros valores *-- No hay otros valores
@@ -9922,6 +9632,17 @@ DEFINE CLASS CL_DBC_TABLE AS CL_CUS_BASE
_RuleExpression = '' _RuleExpression = ''
_RuleText = '' _RuleText = ''
*-- Sub-objects
_Fields = NULL
************************************************************************************************
PROCEDURE INIT
DODEFAULT()
*--
THIS._Fields = CREATEOBJECT("CL_DBC_FIELDS_DB")
ENDPROC
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE analizarBloque PROCEDURE analizarBloque
@@ -9946,7 +9667,7 @@ DEFINE CLASS CL_DBC_TABLE AS CL_CUS_BASE
EXIT EXIT
CASE C_FIELDS_I $ tcLine CASE C_FIELDS_I $ tcLine
loFields = THIS._Fields loFields = THIS._Fields
loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
OTHERWISE && Propiedad de TABLE OTHERWISE && Propiedad de TABLE
@@ -10149,7 +9870,7 @@ DEFINE CLASS CL_DBC_VIEWS AS CL_COL_BASE
LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION
STORE '' TO lcPropName, lcValue STORE '' TO lcPropName, lcValue
IF LEFT(tcLine, LEN(C_VIEW_I)) == C_VIEW_I IF LEFT(tcLine, LEN(C_VIEWS_I)) == C_VIEWS_I
llBloqueEncontrado = .T. llBloqueEncontrado = .T.
FOR I = I + 1 TO tnCodeLines FOR I = I + 1 TO tnCodeLines
@@ -10159,13 +9880,13 @@ DEFINE CLASS CL_DBC_VIEWS AS CL_COL_BASE
CASE EMPTY( tcLine ) CASE EMPTY( tcLine )
LOOP LOOP
CASE C_VIEW_F $ tcLine && Fin CASE C_VIEWS_F $ tcLine && Fin
EXIT EXIT
CASE C_VIEW_I $ tcLine CASE C_VIEW_I $ tcLine
loView = CREATEOBJECT("CL_DBC_VIEW") loView = CREATEOBJECT("CL_DBC_VIEW")
loView.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) loView.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
THIS.ADD( loConnection, loConnection._Name ) THIS.ADD( loView, loView._Name )
OTHERWISE && Otro valor OTHERWISE && Otro valor
*-- No hay otros valores *-- No hay otros valores
@@ -10252,6 +9973,17 @@ DEFINE CLASS CL_DBC_VIEW AS CL_CUS_BASE
_UseMemoSize = '' _UseMemoSize = ''
_WhereType = '' _WhereType = ''
*-- Sub-objects
_Fields = NULL
************************************************************************************************
PROCEDURE INIT
DODEFAULT()
*--
THIS._Fields = CREATEOBJECT("CL_DBC_FIELDS_VW")
ENDPROC
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE analizarBloque PROCEDURE analizarBloque
@@ -10504,7 +10236,7 @@ DEFINE CLASS CL_DBC_RELATIONS AS CL_COL_BASE
CASE C_RELATION_I $ tcLine CASE C_RELATION_I $ tcLine
loRelation = CREATEOBJECT("CL_DBC_RELATION") loRelation = CREATEOBJECT("CL_DBC_RELATION")
loRelation.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) loRelation.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
THIS.ADD( loField, loField._Name ) THIS.ADD( loRelation, loRelation._ChildTable + loRelation._ParentTable )
OTHERWISE && Otro valor OTHERWISE && Otro valor
*-- No hay otros valores *-- No hay otros valores
@@ -10539,39 +10271,21 @@ DEFINE CLASS CL_DBC_RELATION AS CL_CUS_BASE
#ENDIF #ENDIF
_MEMBERDATA = [<VFPData>] ; _MEMBERDATA = [<VFPData>] ;
+ [<memberdata name="_name" display="_Name"/>] ; + [<memberdata name="_childtable" display="_ChildTable"/>] ;
+ [<memberdata name="_caption" display="_Caption"/>] ; + [<memberdata name="_parenttable" display="_ParentTable"/>] ;
+ [<memberdata name="_comment" display="_Comment"/>] ; + [<memberdata name="_childindex" display="_ChildIndex"/>] ;
+ [<memberdata name="_datatype" display="_DataType"/>] ; + [<memberdata name="_parentindex" display="_ParentIndex"/>] ;
+ [<memberdata name="_defaultvalue" display="_DefaultValue"/>] ; + [<memberdata name="_refintegrity" display="_RefIntegrity"/>] ;
+ [<memberdata name="_displayclass" display="_DisplayClass"/>] ;
+ [<memberdata name="_displayclasslibrary" display="_DisplayClassLibrary"/>] ;
+ [<memberdata name="_format" display="_Format"/>] ;
+ [<memberdata name="_inputmask" display="_InputMask"/>] ;
+ [<memberdata name="_keyfield" display="_KeyField"/>] ;
+ [<memberdata name="_ruleexpression" display="_RuleExpression"/>] ;
+ [<memberdata name="_ruletext" display="_RuleText"/>] ;
+ [<memberdata name="_updatable" display="_Updatable"/>] ;
+ [<memberdata name="_updatename" display="_UpdateName"/>] ;
+ [<memberdata name="analizarbloque" display="analizarBloque"/>] ; + [<memberdata name="analizarbloque" display="analizarBloque"/>] ;
+ [</VFPData>] + [</VFPData>]
*-- Info *-- Info
_Name = '' _ChildTable = ''
_Caption = '' _ParentTable = ''
_Comment = '' _ChildIndex = ''
_DataType = '' _ParentIndex = ''
_DefaultValue = '' _RefIntegrity = ''
_DisplayClass = ''
_DisplayClassLibrary = ''
_Format = ''
_InputMask = ''
_KeyField = ''
_RuleExpression = ''
_RuleText = ''
_Updatable = ''
_UpdateName = ''
******************************************************************************************************************* *******************************************************************************************************************