Changeset: 84 .

This commit is contained in:
fernando
2013-12-15 17:04:52 +01:00
parent a6d1a143c7
commit b07ecd50d1

View File

@@ -5157,7 +5157,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
LOCAL loField AS CL_DBF_FIELD OF 'FOXBIN2PRG.PRG'
LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG'
LOCAL lcCreateTable, lcLongDec, lcFieldDef, lcIndex, ldLastUpdate
STORE '' TO lcIndex, lcFieldDef
lcCreateTable = 'CREATE TABLE "' + THIS.c_OutputFile + '" FREE CodePage=' + toTable._CodePage + ' ('
@@ -5237,14 +5237,14 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
USE IN (SELECT(JUSTSTEM(THIS.c_OutputFile)))
ldLastUpdate = EVALUATE( '{^' + toTable._LastUpdate + '}' )
THIS.write_DBF_Metadata( THIS.c_OutputFile, toTable._Database, ldLastUpdate )
CATCH TO loEx
lnCodError = loEx.ErrorNo
loEx.UserValue = 'lcIndex="' + TRANSFORM(lcIndex) + '"' + CR_LF ;
lnCodError = loEx.ERRORNO
loEx.USERVALUE = 'lcIndex="' + TRANSFORM(lcIndex) + '"' + CR_LF ;
+ 'lcFieldDef="' + TRANSFORM(lcFieldDef) + '"' + CR_LF ;
+ 'lcCreateTable="' + TRANSFORM(lcCreateTable) + '"'
@@ -5394,19 +5394,12 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
#ENDIF
TRY
LOCAL loConnection AS CL_DBC_CONNECTION OF 'FOXBIN2PRG.PRG'
LOCAL loTable AS CL_DBC_TABLE OF 'FOXBIN2PRG.PRG'
LOCAL loView AS CL_DBC_VIEW OF 'FOXBIN2PRG.PRG'
LOCAL loRelation AS CL_DBC_RELATION OF 'FOXBIN2PRG.PRG'
LOCAL lcCreateTable, lcLongDec, lcFieldDef, lcIndex, ldLastUpdate
LOCAL lnCodError, lcCreateTable, lcLongDec, lcFieldDef, lcIndex, ldLastUpdate
lnCodError = 0
STORE '' TO lcIndex, lcFieldDef
*-- Conformo los campos
EXIT
toDatabase.updateDBC( THIS.c_OutputFile )
*USE IN (SELECT(JUSTSTEM(THIS.c_OutputFile)))
@@ -5419,9 +5412,6 @@ DEFINE CLASS c_conversor_prg_a_dbc AS c_conversor_prg_a_bin
THROW
FINALLY
USE IN (SELECT("TABLABIN"))
ENDTRY
RETURN lnCodError
@@ -7836,14 +7826,14 @@ ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS CL_CUS_BASE AS CUSTOM
*-- Propiedades (Se preservan: CONTROLCOUNT, CONTROLS, OBJECTS, PARENT)
HIDDEN BASECLASS, CLASS, TOP, WIDTH, CLASSLIB, CLASSLIBRARY, COMMENT ;
*-- Propiedades (Se preservan: CONTROLCOUNT, CONTROLS, OBJECTS, PARENT, CLASS)
HIDDEN BASECLASS, TOP, WIDTH, CLASSLIB, CLASSLIBRARY, COMMENT ;
, HEIGHT, HELPCONTEXTID, LEFT, NAME ;
, PARENTCLASS, PICTURE, TAG, WHATSTHISHELPID
*-- M<>todos (Se preservan: INIT, DESTROY, ERROR, ADDPROPERTY)
*HIDDEN ADDOBJECT, NEWOBJECT, READEXPRESSION, READMETHOD, REMOVEOBJECT ;
, RESETTODEFAULT, SAVEASCLASS, SHOWWHATSTHIS, WRITEEXPRESSION, WRITEMETHOD
, RESETTODEFAULT, SAVEASCLASS, SHOWWHATSTHIS, WRITEEXPRESSION, WRITEMETHOD
_MEMBERDATA = [<VFPData>] ;
+ [<memberdata name="l_debug" display="l_Debug"/>] ;
@@ -8647,14 +8637,6 @@ DEFINE CLASS CL_DBC_COL_BASE AS CL_COL_BASE
_MEMBERDATA = [<VFPData>] ;
+ [<memberdata name="_name" display="_Name"/>] ;
+ [<memberdata name="__objectid" display="__ObjectID"/>] ;
+ [<memberdata name="getbinpropertydatarecord" display="getBinPropertyDataRecord"/>] ;
+ [<memberdata name="getcodememo" display="getCodeMemo"/>] ;
+ [<memberdata name="getid" display="getID"/>] ;
+ [<memberdata name="getobjecttype" display="getObjectType"/>] ;
+ [<memberdata name="getmemowithproperties" display="getMemoWithProperties"/>] ;
+ [<memberdata name="getreferentialintegrityinfo" display="getReferentialIntegrityInfo"/>] ;
+ [<memberdata name="getusermemo" display="getUserMemo"/>] ;
+ [<memberdata name="setnextid" display="setNextID"/>] ;
+ [<memberdata name="updatedbc" display="updateDBC"/>] ;
+ [</VFPData>]
@@ -8668,17 +8650,24 @@ DEFINE CLASS CL_DBC_COL_BASE AS CL_COL_BASE
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
* tc_OutputFile (v! IN ) Nombre del archivo de salida
* tnLastID (@! IN ) <20>ltimo n<>mero de ID usado
* tnParentID (v! IN ) ID del objeto Padre
*---------------------------------------------------------------------------------------------------
LPARAMETERS tc_OutputFile, tnLastID
LPARAMETERS tc_OutputFile, tnLastID, tnParentID
LOCAL loObject
FOR EACH loTable AS CL_DBC_TABLE OF 'FOXBIN2PRG.PRG' IN loTables FOXOBJECT
loTable.updateDBC
FOR EACH loObject IN THIS FOXOBJECT
loObject.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
ENDFOR
RETURN
ENDPROC
PROCEDURE __ObjectID_ACCESS
RETURN THIS.PARENT.__ObjectID
ENDPROC
ENDDEFINE
@@ -8743,34 +8732,34 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
PROCEDURE getObjectType
LOCAL lcType
DO CASE
CASE THIS.Class = 'Cl_dbc'
CASE THIS.CLASS == 'Cl_dbc'
lcType = 'Database'
CASE THIS.Class = 'Cl_dbc_connection'
CASE THIS.CLASS == 'Cl_dbc_connection'
lcType = 'Connection'
CASE THIS.Class = 'Cl_dbc_table'
CASE THIS.CLASS == 'Cl_dbc_table'
lcType = 'Table'
CASE THIS.Class = 'Cl_dbc_view'
CASE THIS.CLASS == 'Cl_dbc_view'
lcType = 'View'
CASE THIS.Class = 'Cl_dbc_index'
CASE THIS.CLASS == 'Cl_dbc_index_db' OR THIS.CLASS == 'Cl_dbc_index_vw'
lcType = 'Index'
CASE THIS.Class = 'Cl_dbc_relation'
CASE THIS.CLASS == 'Cl_dbc_relation'
lcType = 'Relation'
CASE THIS.Class = 'Cl_dbc_field'
CASE THIS.CLASS == 'Cl_dbc_field_db' OR THIS.CLASS == 'Cl_dbc_field_vw'
lcType = 'Field'
OTHERWISE
lcType = 'Unknown'
ERROR 'Clase [' + THIS.Class + '] desconocida'
ENDCASE
RETURN lcType
ENDPROC
@@ -8778,7 +8767,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
PROCEDURE setNextID
LPARAMETERS tnLastID
tnLastID = tnLastID + 1
THIS.__ObjectID = tcID
THIS.__ObjectID = tnLastID
ENDPROC
@@ -8787,12 +8776,21 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
* tc_OutputFile (v! IN ) Nombre del archivo de salida
* tnLastID (@! IN ) <20>ltimo n<>mero de ID usado
* tnParentID (v! IN ) ID del objeto Padre
*---------------------------------------------------------------------------------------------------
LPARAMETERS tc_OutputFile, tnLastID
LPARAMETERS tc_OutputFile, tnLastID, tnParentID
TRY
LOCAL lcMemoWithProperties, lcCodeMemo, lcObjectType, lcRI_Info, lcUserMemo, lcID
WITH THIS AS CL_DBC_BASE OF 'FOXBIN2PRG.PRG'
.setNextID( @tnLastID )
lcMemoWithProperties = .getMemoWithProperties()
lcCodeMemo = .getCodeMemo()
lcObjectType = .getObjectType()
lcRI_Info = .getReferentialIntegrityInfo()
lcUserMemo = .getUserMemo()
lcID = .getID()
INSERT INTO TABLABIN ;
( ObjectID ;
@@ -8800,18 +8798,18 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
, ObjectType ;
, ObjectName ;
, Property ;
, Code ;
, CODE ;
, RIInfo ;
, User ) ;
, USER ) ;
VALUES ;
( .getID() ;
, .Parent.getID() ;
, .getObjectType() ;
( lcID ;
, tnParentID ;
, lcObjectType ;
, ._Name ;
, .getMemoWithProperties() ;
, .getCodeMemo ;
, .getReferentialIntegrityInfo() ;
, .getUserMemo() )
, lcMemoWithProperties ;
, lcCodeMemo ;
, lcRI_Info ;
, lcUserMemo )
ENDWITH && THIS
CATCH TO loEx
@@ -8961,7 +8959,7 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE
* ePropertyValue (v! IN ) Valor de la propiedad
*---------------------------------------------------------------------------------------------------
LPARAMETERS cName, cType, cProperty, ePropertyValue
ENDPROC
@@ -8970,10 +8968,11 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
* tc_OutputFile (v! IN ) Nombre del archivo de salida
* tnLastID (@! IN ) <20>ltimo n<>mero de ID usado
* tnParentID (v! IN ) ID del objeto Padre
*---------------------------------------------------------------------------------------------------
LPARAMETERS tc_OutputFile, tnLastID
LPARAMETERS tc_OutputFile, tnLastID, tnParentID
TRY
TRY
LOCAL loTables AS CL_DBC_TABLES ;
, loConnections AS CL_DBC_CONNECTIONS ;
, loViews AS CL_DBC_VIEWS ;
@@ -8987,13 +8986,15 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE
CREATE DATABASE (tc_OutputFile)
CLOSE DATABASES
OPEN DATABASE (tc_OutputFile) SHARED
USE (tc_OutputFile) SHARED AGAIN ALIAS ARCHIVOBIN
USE (tc_OutputFile) SHARED AGAIN ALIAS TABLABIN
tnLastID = 5
THIS.setNextID(0)
*FOR EACH loTable AS CL_DBC_TABLE OF 'FOXBIN2PRG.PRG' IN loTables FOXOBJECT
* loTable.updateDBC
*ENDFOR
tnParentID = THIS.__ObjectID
loTables.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
loViews.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
loConnections.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
loRelations.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
CATCH TO loEx
@@ -9005,6 +9006,7 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE
FINALLY
CLOSE DATABASES
USE IN (SELECT("TABLABIN"))
ENDTRY
@@ -9072,7 +9074,7 @@ ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS CL_DBC_CONNECTIONS AS CL_COL_BASE
DEFINE CLASS CL_DBC_CONNECTIONS AS CL_DBC_COL_BASE
#IF .F.
LOCAL THIS AS CL_DBC_CONNECTIONS OF 'FOXBIN2PRG.PRG'
#ENDIF
@@ -9159,7 +9161,7 @@ DEFINE CLASS CL_DBC_CONNECTIONS AS CL_COL_BASE
<<>>
<<>> <CONNECTIONS>
ENDTEXT
loConnection = CREATEOBJECT('CL_DBC_CONNECTION')
FOR I = 1 TO tnConnection_Count
@@ -9343,7 +9345,7 @@ ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS CL_DBC_TABLES AS CL_COL_BASE
DEFINE CLASS CL_DBC_TABLES AS CL_DBC_COL_BASE
#IF .F.
LOCAL THIS AS CL_DBC_TABLES OF 'FOXBIN2PRG.PRG'
#ENDIF
@@ -9414,7 +9416,7 @@ DEFINE CLASS CL_DBC_TABLES AS CL_COL_BASE
* lnTable_Count (@? OUT) Cantidad de conexiones
*---------------------------------------------------------------------------------------------------
LPARAMETERS taTables, tnTable_Count
EXTERNAL ARRAY taTables
TRY
@@ -9433,7 +9435,7 @@ DEFINE CLASS CL_DBC_TABLES AS CL_COL_BASE
<<>>
<<>> <TABLES>
ENDTEXT
loTable = CREATEOBJECT('CL_DBC_TABLE')
FOR I = 1 TO tnTable_Count
@@ -9527,6 +9529,7 @@ DEFINE CLASS CL_DBC_TABLE AS CL_DBC_BASE
TRY
LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION
LOCAL loFields AS CL_DBC_FIELDS_DB OF 'FOXBIN2PRG.PRG'
LOCAL loIndexes AS CL_DBC_INDEXES_DB OF 'FOXBIN2PRG.PRG'
STORE '' TO lcPropName, lcValue
IF LEFT(tcLine, LEN(C_TABLE_I)) == C_TABLE_I
@@ -9546,6 +9549,10 @@ DEFINE CLASS CL_DBC_TABLE AS CL_DBC_BASE
loFields = THIS._Fields
loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
CASE C_INDEXES_I $ tcLine
loIndexes = THIS._Indexes
loIndexes.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
OTHERWISE && Propiedad de TABLE
*-- Estructura a reconocer:
* <name>NOMBRE</name>
@@ -9627,17 +9634,32 @@ DEFINE CLASS CL_DBC_TABLE AS CL_DBC_BASE
ENDPROC
PROCEDURE updateDBC
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
* tc_OutputFile (v! IN ) Nombre del archivo de salida
* tnLastID (@! IN ) <20>ltimo n<>mero de ID usado
* tnParentID (v! IN ) ID del objeto Padre
*---------------------------------------------------------------------------------------------------
LPARAMETERS tc_OutputFile, tnLastID, tnParentID
DODEFAULT( tc_OutputFile, @tnLastID, tnParentID)
tnParentID = THIS.__ObjectID
THIS._Fields.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
THIS._Indexes.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
ENDPROC
ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS CL_DBC_FIELDS_DB AS CL_COL_BASE
DEFINE CLASS CL_DBC_FIELDS_DB AS CL_DBC_COL_BASE
#IF .F.
LOCAL THIS AS CL_DBC_FIELDS_DB OF 'FOXBIN2PRG.PRG'
#ENDIF
*******************************************************************************************************************
PROCEDURE analizarBloque
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
@@ -9650,7 +9672,6 @@ DEFINE CLASS CL_DBC_FIELDS_DB AS CL_COL_BASE
TRY
LOCAL loField AS CL_DBC_FIELD_DB OF 'FOXBIN2PRG.PRG'
*LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG'
LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION
STORE '' TO lcPropName, lcValue
@@ -9709,9 +9730,9 @@ DEFINE CLASS CL_DBC_FIELDS_DB AS CL_COL_BASE
lcText = ''
_TALLY = 0
SELECT LOWER(TB.objectname) FROM TABLABIN TB ;
INNER JOIN TABLABIN TB2 ON STR(TB.parentid)+TB.objecttype = STR(TB2.objectid)+PADR('Field',10) ;
AND TB2.objectname = PADR(LOWER(tcTable),128) ;
SELECT LOWER(TB.ObjectName) FROM TABLABIN TB ;
INNER JOIN TABLABIN TB2 ON STR(TB.ParentID)+TB.ObjectType = STR(TB2.ObjectID)+PADR('Field',10) ;
AND TB2.ObjectName = PADR(LOWER(tcTable),128) ;
INTO ARRAY laFields
lnField_Count = _TALLY
@@ -9720,7 +9741,7 @@ DEFINE CLASS CL_DBC_FIELDS_DB AS CL_COL_BASE
<<>>
<<>> <FIELDS>
ENDTEXT
loField = CREATEOBJECT('CL_DBC_FIELD_DB')
FOR X = 1 TO lnField_Count
@@ -9789,7 +9810,6 @@ DEFINE CLASS CL_DBC_FIELD_DB AS CL_DBC_BASE
_RuleText = ''
*******************************************************************************************************************
PROCEDURE analizarBloque
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
@@ -9844,7 +9864,6 @@ DEFINE CLASS CL_DBC_FIELD_DB AS CL_DBC_BASE
ENDPROC
*******************************************************************************************************************
PROCEDURE toText
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
@@ -9892,7 +9911,7 @@ ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS CL_DBC_INDEXES_DB AS CL_COL_BASE
DEFINE CLASS CL_DBC_INDEXES_DB AS CL_DBC_COL_BASE
#IF .F.
LOCAL THIS AS CL_DBC_INDEXES_DB OF 'FOXBIN2PRG.PRG'
#ENDIF
@@ -9904,12 +9923,62 @@ DEFINE CLASS CL_DBC_INDEXES_DB AS CL_COL_BASE
_Comment = ''
*******************************************************************************************************************
PROCEDURE analizarBloque
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
* tcLine (@! IN/OUT) Contenido de la l<>nea en an<61>lisis
* taCodeLines (@! IN ) Array de l<>neas del programa analizado
* I (@! IN/OUT) N<>mero de l<>nea en an<61>lisis
* tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado
*---------------------------------------------------------------------------------------------------
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
TRY
LOCAL loIndex AS CL_DBC_INDEX_DB OF 'FOXBIN2PRG.PRG'
LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION
STORE '' TO lcPropName, lcValue
IF LEFT(tcLine, LEN(C_INDEXES_I)) == C_INDEXES_I
llBloqueEncontrado = .T.
FOR I = I + 1 TO tnCodeLines
THIS.set_Line( @tcLine, @taCodeLines, I )
DO CASE
CASE EMPTY( tcLine )
LOOP
CASE C_INDEXES_F $ tcLine && Fin
EXIT
CASE C_INDEX_I $ tcLine
loIndex = CREATEOBJECT("CL_DBC_INDEX_DB")
loIndex.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
THIS.ADD( loIndex, loIndex._Name )
OTHERWISE && Otro valor
*-- No hay otros valores
ENDCASE
ENDFOR
ENDIF
CATCH TO loEx
IF loEx.ERRORNO = 1470 && Incorrect property name.
loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine)
ENDIF
IF THIS.l_Debug AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
ENDTRY
RETURN llBloqueEncontrado
ENDPROC
*******************************************************************************************************************
PROCEDURE toText
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
@@ -9924,9 +9993,9 @@ DEFINE CLASS CL_DBC_INDEXES_DB AS CL_COL_BASE
lcText = ''
_TALLY = 0
SELECT LOWER(TB.objectname) FROM TABLABIN TB ;
INNER JOIN TABLABIN TB2 ON STR(TB.parentid)+TB.objecttype = STR(TB2.objectid)+PADR('Index',10) ;
AND TB2.objectname = PADR(LOWER(tcTable),128) ;
SELECT LOWER(TB.ObjectName) FROM TABLABIN TB ;
INNER JOIN TABLABIN TB2 ON STR(TB.ParentID)+TB.ObjectType = STR(TB2.ObjectID)+PADR('Index',10) ;
AND TB2.ObjectName = PADR(LOWER(tcTable),128) ;
INTO ARRAY laIndexes
lnIndex_Count = _TALLY
@@ -9990,12 +10059,60 @@ DEFINE CLASS CL_DBC_INDEX_DB AS CL_DBC_BASE
_Comment = ''
*******************************************************************************************************************
PROCEDURE analizarBloque
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
* tcLine (@! IN/OUT) Contenido de la l<>nea en an<61>lisis
* taCodeLines (@! IN ) Array de l<>neas del programa analizado
* I (@! IN/OUT) N<>mero de l<>nea en an<61>lisis
* tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado
*---------------------------------------------------------------------------------------------------
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
TRY
LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION
STORE '' TO lcPropName, lcValue
IF LEFT(tcLine, LEN(C_INDEX_I)) == C_INDEX_I
llBloqueEncontrado = .T.
FOR I = I + 1 TO tnCodeLines
THIS.set_Line( @tcLine, @taCodeLines, I )
DO CASE
CASE EMPTY( tcLine )
LOOP
CASE C_INDEX_F $ tcLine && Fin
EXIT
OTHERWISE && Propiedad de FIELD
*-- Estructura a reconocer:
* <name>NOMBRE</name>
lcPropName = STREXTRACT( tcLine, '<', '>', 1, 0 )
lcValue = STREXTRACT( tcLine, '<' + lcPropName + '>', '</' + lcPropName + '>', 1, 0 )
THIS.ADDPROPERTY( '_' + lcPropName, lcValue )
ENDCASE
ENDFOR
ENDIF
CATCH TO loEx
IF loEx.ERRORNO = 1470 && Incorrect property name.
loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']'
ENDIF
IF THIS.l_Debug AND _VFP.STARTMODE = 0
SET STEP ON
ENDIF
THROW
ENDTRY
RETURN llBloqueEncontrado
ENDPROC
*******************************************************************************************************************
PROCEDURE toText
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
@@ -10042,7 +10159,7 @@ ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS CL_DBC_VIEWS AS CL_COL_BASE
DEFINE CLASS CL_DBC_VIEWS AS CL_DBC_COL_BASE
#IF .F.
LOCAL THIS AS CL_DBC_VIEWS OF 'FOXBIN2PRG.PRG'
#ENDIF
@@ -10131,7 +10248,7 @@ DEFINE CLASS CL_DBC_VIEWS AS CL_COL_BASE
<<>>
<<>> <VIEWS>
ENDTEXT
loView = CREATEOBJECT('CL_DBC_VIEW')
FOR I = 1 TO tnView_Count
@@ -10273,9 +10390,9 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE
loFields = THIS._Fields
loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
*CASE C_INDEXES_I $ tcLine
* loIndexes = THIS._Indexes
* loIndexes.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
CASE C_INDEXES_I $ tcLine
loIndexes = THIS._Indexes
loIndexes.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
OTHERWISE && Propiedad de VIEW
*-- Estructura a reconocer:
@@ -10347,7 +10464,7 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE
loFields = THIS._Fields
lcText = lcText + loFields.toText( tcView )
loIndexes = THIS._Indexes
lcText = lcText + loIndexes.toText( tcView )
@@ -10371,11 +10488,27 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE
ENDPROC
PROCEDURE updateDBC
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
* tc_OutputFile (v! IN ) Nombre del archivo de salida
* tnLastID (@! IN ) <20>ltimo n<>mero de ID usado
* tnParentID (v! IN ) ID del objeto Padre
*---------------------------------------------------------------------------------------------------
LPARAMETERS tc_OutputFile, tnLastID, tnParentID
DODEFAULT( tc_OutputFile, @tnLastID, tnParentID)
tnParentID = THIS.__ObjectID
THIS._Fields.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
THIS._Indexes.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
ENDPROC
ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS CL_DBC_FIELDS_VW AS CL_COL_BASE
DEFINE CLASS CL_DBC_FIELDS_VW AS CL_DBC_COL_BASE
#IF .F.
LOCAL THIS AS CL_DBC_FIELDS_VW OF 'FOXBIN2PRG.PRG'
#ENDIF
@@ -10453,9 +10586,9 @@ DEFINE CLASS CL_DBC_FIELDS_VW AS CL_COL_BASE
lcText = ''
_TALLY = 0
SELECT LOWER(TB.objectname) FROM TABLABIN TB ;
INNER JOIN TABLABIN TB2 ON STR(TB.parentid)+TB.objecttype = STR(TB2.objectid)+PADR('Field',10) ;
AND TB2.objectname = PADR(LOWER(tcView),128) ;
SELECT LOWER(TB.ObjectName) FROM TABLABIN TB ;
INNER JOIN TABLABIN TB2 ON STR(TB.ParentID)+TB.ObjectType = STR(TB2.ObjectID)+PADR('Field',10) ;
AND TB2.ObjectName = PADR(LOWER(tcView),128) ;
INTO ARRAY laFields
lnField_Count = _TALLY
@@ -10645,7 +10778,7 @@ ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS CL_DBC_RELATIONS AS CL_COL_BASE
DEFINE CLASS CL_DBC_RELATIONS AS CL_DBC_COL_BASE
#IF .F.
LOCAL THIS AS CL_DBC_RELATIONS OF 'FOXBIN2PRG.PRG'
#ENDIF
@@ -10733,7 +10866,7 @@ DEFINE CLASS CL_DBC_RELATIONS AS CL_COL_BASE
<<>>
<<>> <RELATIONS>
ENDTEXT
loRelation = CREATEOBJECT('CL_DBC_RELATION')
FOR I = 1 TO tnRelation_Count
@@ -10877,6 +11010,24 @@ DEFINE CLASS CL_DBC_RELATION AS CL_DBC_BASE
ENDPROC
PROCEDURE getReferentialIntegrityInfo
RETURN THIS._RefIntegrity
ENDPROC
PROCEDURE getMemoWithProperties
LOCAL lcBinData
lcBinData = ''
lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._ChildIndex, 13 )
lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._ParentTable, 18 )
lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._ParentIndex, 19 )
*_ChildTable not used.
RETURN lcBinData
ENDPROC
ENDDEFINE
@@ -11004,7 +11155,7 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
* tc_InputFile (v! IN ) Nombre del archivo de salida
*---------------------------------------------------------------------------------------------------
LPARAMETERS tn_HexFileType, tl_FileHasCDX, tl_FileHasMemo, tl_FileIsDBC, tc_DBC_Name, tc_InputFile
EXTERNAL ARRAY taFields
TRY
@@ -11133,7 +11284,7 @@ DEFINE CLASS CL_DBF_FIELDS AS CL_COL_BASE
* tnField_Count (@? OUT) Cantidad de campos
*---------------------------------------------------------------------------------------------------
LPARAMETERS taFields, tnField_Count
EXTERNAL ARRAY taFields
TRY
@@ -11146,7 +11297,7 @@ DEFINE CLASS CL_DBF_FIELDS AS CL_COL_BASE
<<>>
<<>> <<C_FIELDS_I>>
ENDTEXT
tnField_Count = AFIELDS(taFields)
loField = CREATEOBJECT('CL_DBF_FIELD')
@@ -11287,7 +11438,7 @@ DEFINE CLASS CL_DBF_FIELD AS CL_CUS_BASE
* I (@! IN ) Campo en evaluaci<63>n
*---------------------------------------------------------------------------------------------------
LPARAMETERS taFields, I
EXTERNAL ARRAY taFields
TRY
@@ -11404,9 +11555,9 @@ DEFINE CLASS CL_DBF_INDEXES AS CL_COL_BASE
* tnTagInfo_Count (@? OUT) Cantidad de <20>ndices
*---------------------------------------------------------------------------------------------------
LPARAMETERS taTagInfo, tnTagInfo_Count
EXTERNAL ARRAY taTagInfo
TRY
LOCAL I, lcText, loEx AS EXCEPTION
LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG'
@@ -11423,7 +11574,7 @@ DEFINE CLASS CL_DBF_INDEXES AS CL_COL_BASE
tnTagInfo_Count = ATAGINFO( taTagInfo )
loIndex = CREATEOBJECT("CL_DBF_INDEX")
FOR I = 1 TO tnTagInfo_Count
lcText = lcText + loIndex.toText( @taTagInfo, I )
ENDFOR
@@ -11537,9 +11688,9 @@ DEFINE CLASS CL_DBF_INDEX AS CL_CUS_BASE
* I (@? IN ) Indice en evaluaci<63>n
*---------------------------------------------------------------------------------------------------
LPARAMETERS taTagInfo, I
EXTERNAL ARRAY taTagInfo
TRY
LOCAL I, lcText, loEx AS EXCEPTION
lcText = ''