diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index 3a369b3..2906427 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -690,7 +690,7 @@ DEFINE CLASS c_conversor_base AS SESSION
+ [] ;
+ [] ;
+ [] ;
- + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -1737,7 +1737,7 @@ DEFINE CLASS c_conversor_base AS SESSION
lnPropType = 2 && User property
lcPropName = 'A998' + lcPropName
ENDCASE
-
+
RETURN lcPropName
ENDPROC
@@ -1832,7 +1832,7 @@ DEFINE CLASS c_conversor_base AS SESSION
DIMENSION laPropsAndValues( tnPropsAndValues_Count, lnArrayCols )
ACOPY( taPropsAndValues, laPropsAndValues )
- WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
+ WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
IF m.tnSortType >= 1
* CON SORT:
* - A las que no tienen '.' les pongo 'A' por delante, y al resto 'B' por delante para que queden al final
@@ -1870,7 +1870,7 @@ DEFINE CLASS c_conversor_base AS SESSION
FOR I = 1 TO m.tnPropsAndValues_Count
*taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 ) && Quitar el carácter agregado
-
+
*-- Quitar caracteres agregados antes del SORT
IF '.' $ laPropsAndValues(I,1)
IF m.tnSortType = 2
@@ -1886,7 +1886,7 @@ DEFINE CLASS c_conversor_base AS SESSION
taPropsAndValues(I,1) = SUBSTR( laPropsAndValues(I,1), 2 )
ENDIF
ENDIF
-
+
taPropsAndValues(I,2) = laPropsAndValues(I,2)
IF lnArrayCols >= 3
@@ -8980,11 +8980,15 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
_MEMBERDATA = [] ;
+ [] ;
+ [] ;
+ + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ + [] ;
+ + [] ;
+ [] ;
+ [] ;
- + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -8996,20 +9000,304 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
_Name = ''
+ PROCEDURE getDBCPropertyIDByName
+ LPARAMETERS tcPropertyName
+ LOCAL lnID
+ tcPropertyName = LOWER(RTRIM(tcPropertyName))
+
+ DO CASE
+ CASE tcPropertyName == 'null'
+ lnID = 0
+ CASE tcPropertyName == 'path'
+ lnID = 1
+ CASE tcPropertyName == 'class'
+ lnID = 2
+ CASE tcPropertyName == 'comment'
+ lnID = 7
+ CASE tcPropertyName == 'ruleexpression'
+ lnID = 9
+ CASE tcPropertyName == 'ruletext'
+ lnID = 10
+ CASE tcPropertyName == 'defaultvalue'
+ lnID = 11
+ CASE tcPropertyName == 'parameterlist'
+ lnID = 12
+ CASE tcPropertyName == 'childtag'
+ lnID = 13
+ CASE tcPropertyName == 'inserttrigger'
+ lnID = 14
+ CASE tcPropertyName == 'updatetrigger'
+ lnID = 15
+ CASE tcPropertyName == 'deletetrigger'
+ lnID = 16
+ CASE tcPropertyName == 'isunique'
+ lnID = 17
+ CASE tcPropertyName == 'relatedtable'
+ lnID = 18
+ CASE tcPropertyName == 'relatedtag'
+ lnID = 19
+ CASE tcPropertyName == 'primarykey'
+ lnID = 20
+ CASE tcPropertyName == 'version'
+ lnID = 24
+ CASE tcPropertyName == 'batchupdatecount'
+ lnID = 28
+ CASE tcPropertyName == 'datasource'
+ lnID = 29
+ CASE tcPropertyName == 'connectname'
+ lnID = 32
+ CASE tcPropertyName == 'updatename'
+ lnID = 35
+ CASE tcPropertyName == 'fetchmemo'
+ lnID = 36
+ CASE tcPropertyName == 'fetchsize'
+ lnID = 37
+ CASE tcPropertyName == 'keyfield'
+ lnID = 38
+ CASE tcPropertyName == 'maxrecords'
+ lnID = 39
+ CASE tcPropertyName == 'shareconnection'
+ lnID = 40
+ CASE tcPropertyName == 'sourcetype'
+ lnID = 41
+ CASE tcPropertyName == 'sql'
+ lnID = 42
+ CASE tcPropertyName == 'tables'
+ lnID = 43
+ CASE tcPropertyName == 'sendupdates'
+ lnID = 44
+ CASE tcPropertyName == 'updatablefield' OR tcPropertyName == 'updatable'
+ lnID = 45
+ CASE tcPropertyName == 'updatetype'
+ lnID = 46
+ CASE tcPropertyName == 'usememosize'
+ lnID = 47
+ CASE tcPropertyName == 'wheretype'
+ lnID = 48
+ CASE tcPropertyName == 'displayclass' && Undocumented
+ lnID = 50
+ CASE tcPropertyName == 'displayclasslibrary' && Undocumented
+ lnID = 51
+ CASE tcPropertyName == 'inputmask' && Undocumented
+ lnID = 54
+ CASE tcPropertyName == 'format' && Undocumented
+ lnID = 55
+ CASE tcPropertyName == 'caption'
+ lnID = 56
+ CASE tcPropertyName == 'asynchronous'
+ lnID = 64
+ CASE tcPropertyName == 'batchmode'
+ lnID = 65
+ CASE tcPropertyName == 'connectstring'
+ lnID = 66
+ CASE tcPropertyName == 'connecttimeout'
+ lnID = 67
+ CASE tcPropertyName == 'displogin'
+ lnID = 68
+ CASE tcPropertyName == 'dispwarnings'
+ lnID = 69
+ CASE tcPropertyName == 'idletimeout'
+ lnID = 70
+ CASE tcPropertyName == 'querytimeout'
+ lnID = 71
+ CASE tcPropertyName == 'password'
+ lnID = 72
+ CASE tcPropertyName == 'transactions'
+ lnID = 73
+ CASE tcPropertyName == 'userid'
+ lnID = 74
+ CASE tcPropertyName == 'waittime'
+ lnID = 75
+ CASE tcPropertyName == 'timestamp'
+ lnID = 76
+ CASE tcPropertyName == 'datatype'
+ lnID = 77
+ CASE tcPropertyName == 'packetsize' && Undocumented
+ lnID = 78
+ CASE tcPropertyName == 'prepared' && Undocumented
+ lnID = 80
+ CASE tcPropertyName == 'comparememo' && Undocumented
+ lnID = 81
+ CASE tcPropertyName == 'fetchasneeded' && Undocumented
+ lnID = 82
+ CASE tcPropertyName == 'offline' && Undocumented
+ lnID = 83
+ CASE tcPropertyName == 'recordcount' && Undocumented
+ lnID = 84
+ CASE tcPropertyName == 'undocumented_view_prop_85' && Undocumented
+ lnID = 85
+ CASE tcPropertyName == 'allowsimultaneousfetch' && Undocumented
+ lnID = 88
+ CASE tcPropertyName == 'disconnectrollback' && Undocumented
+ lnID = 89
+ OTHERWISE
+ ERROR 1559, (tcPropertyName)
+ ENDCASE
+
+ RETURN lnID
+ ENDPROC
+
+
+ PROCEDURE getDBCPropertyValueTypeByID
+ LPARAMETERS tnID
+ LOCAL lcValueType
+ lcValueType = ''
+
+ DO CASE
+ CASE INLIST(tnID,17,36,38,40,44,45,64,65,69,80,81,82,83,88,89)
+ lcValueType = 'L'
+
+ CASE INLIST(tnID,24,28,37,39,41,46,47,48,67,68,70,71,73,75,76,78,84,85)
+ lcValueType = 'N'
+
+ OTHERWISE
+ lcValueType = 'C'
+ ENDCASE
+
+ RETURN lcValueType
+ ENDPROC
+
+
+ PROCEDURE DBGETPROP
+ *---------------------------------------------------------------------------------------------------
+ * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
+ * tcName (v! IN ) Nombre del objeto
+ * tcType (v! IN ) Tipo de objeto (Table, Index, Field, View, Relation)
+ * tcProperty (v! IN ) Nombre de la propiedad
+ *---------------------------------------------------------------------------------------------------
+ LPARAMETERS tcName, tcType, tcProperty
+
+ TRY
+ LOCAL lcValue, leValue, lnSelect, laProperty(1,1), lnRecordLen, lcBinRecord, lnDataConceptCode ;
+ , lnLastPos, lnLenCCode, lcDataType, lnSerchedDataCC, lcDBF, lnLenData, lnLenHeader
+ lnSelect = SELECT()
+ leValue = ''
+ tcName = PROPER(RTRIM(tcName))
+ tcType = PROPER(RTRIM(tcType))
+ tcProperty = PROPER(RTRIM(tcProperty))
+ lcDBF = DBF()
+
+ SELECT 0
+ USE (lcDBF) AGAIN SHARED NOUPDATE ALIAS C_TABLABIN2
+
+ IF INLIST( tcType, 'Index', 'Field' )
+ SELECT TB.Property FROM C_TABLABIN2 TB ;
+ INNER JOIN C_TABLABIN2 TB2 ON STR(TB.ParentID)+TB.ObjectType+LOWER(TB.objectName) = STR(TB2.ObjectID)+PADR(tcType,10)+PADR(LOWER(JUSTEXT(tcName)),128) ;
+ AND TB2.objectName = PADR(LOWER(JUSTSTEM(tcName)),128) ;
+ INTO ARRAY laProperty
+
+ ELSE
+ SELECT TB.Property FROM C_TABLABIN2 TB ;
+ INNER JOIN C_TABLABIN2 TB2 ON STR(TB.ParentID)+TB.ObjectType+LOWER(TB.objectName) = STR(TB2.ObjectID)+PADR(tcType,10)+PADR(LOWER(tcName),128) ;
+ INTO ARRAY laProperty
+
+ ENDIF
+
+ IF _TALLY > 0
+ IF EMPTY(laProperty(1,1))
+ EXIT
+ ENDIF
+
+ lnLastPos = 1
+ lnSerchedDataCC = THIS.getDBCPropertyIDByName( tcProperty )
+
+ DO WHILE lnLastPos < LEN(laProperty(1,1))
+ lnRecordLen = CTOBIN( SUBSTR(laProperty(1,1), lnLastPos, 4), "4RS" )
+ lcBinRecord = SUBSTR(laProperty(1,1), lnLastPos, lnRecordLen)
+ lnLenCCode = CTOBIN( SUBSTR(lcBinRecord, 4+1, 2), "2RS" )
+ lnDataConceptCode = ASC( SUBSTR(lcBinRecord, 4+2+1, lnLenCCode) )
+
+ IF lnDataConceptCode = lnSerchedDataCC
+ lcDataType = THIS.getDBCPropertyValueTypeByID( lnDataConceptCode )
+ lnLenHeader = 4 + 2 + lnLenCCode
+ lcValue = SUBSTR(lcBinRecord, lnLenHeader + 1)
+
+ DO CASE
+ CASE lcDataType = 'L'
+ IF lnLenHeader = lnRecordLen
+ leValue = .F.
+ ELSE
+ leValue = ( CTOBIN( lcValue, "1S" ) = 1 )
+ ENDIF
+
+ CASE lcDataType = 'N'
+ IF lnLenHeader = lnRecordLen
+ leValue = 0
+ ELSE
+ leValue = CTOBIN( lcValue, "4S" )
+ ENDIF
+
+ OTHERWISE && Asume 'C'
+ IF lnLenHeader = lnRecordLen
+ leValue = ''
+ ELSE
+ leValue = LEFT( lcValue, AT( CHR(0), lcValue ) - 1 )
+ ENDIF
+ ENDCASE
+
+ EXIT
+ ENDIF
+
+ lnLastPos = lnLastPos + lnRecordLen
+ ENDDO
+ ELSE
+ ERROR 1562, (tcName)
+ ENDIF
+
+
+ CATCH TO loEx
+ IF THIS.l_Debug AND _VFP.STARTMODE = 0
+ SET STEP ON
+ ENDIF
+
+ THROW
+
+ FINALLY
+ USE IN (SELECT("C_TABLABIN2"))
+ SELECT (lnSelect)
+ ENDTRY
+
+ RETURN leValue
+ ENDPROC
+
+
+ PROCEDURE DBSETPROP
+ *---------------------------------------------------------------------------------------------------
+ * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
+ * tcName (v! IN ) Nombre del objeto
+ * tcType (v! IN ) Tipo de objeto (Table, Index, Field, View, Relation)
+ * tcProperty (v! IN ) Nombre de la propiedad
+ * tePropertyValue (v! IN ) Valor de la propiedad
+ *---------------------------------------------------------------------------------------------------
+ LPARAMETERS tcName, tcType, tcProperty, tePropertyValue
+
+ ENDPROC
+
+
PROCEDURE getBinPropertyDataRecord
- LPARAMETERS teData, tnDataType
- LOCAL lcBinRecord, lnLen
-
+ LPARAMETERS teData, tnDataConceptCode
+ LOCAL lcBinRecord, lnLen, lcDataType
+
lcBinRecord = ''
-
- IF VARTYPE(teData) = 'N'
- teData = BINTOC( teData, "4RS" )
+ lcDataType = VARTYPE(tcDataType)
+
+ DO CASE
+ CASE VARTYPE(teData) = 'L'
+ teData = BINTOC( tePropertyValue, "1S" )
+ lnLen = 4 + 2 + 1 + 1
+ lcBinRecord = BINTOC( lnLen, "4RS" ) + BINTOC( 1, "2RS" ) + CHR(tnDataConceptCode) + teData
+
+ CASE VARTYPE(teData) = 'N'
+ teData = BINTOC( tePropertyValue, "4S" )
+ lnLen = 4 + 2 + 1 + 4
+ lcBinRecord = BINTOC( lnLen, "4RS" ) + BINTOC( 1, "2RS" ) + CHR(tnDataConceptCode) + teData
+
+ OTHERWISE && Asume 'C'
+ teData = tePropertyValue
lnLen = 4 + 2 + 1 + LEN(teData) + 1
- lcBinRecord = BINTOC( lnLen, "4RS" ) + BINTOC( 1, "2RS" ) + CHR(tnDataType) + teData
- ELSE
- lnLen = 4 + 2 + 1 + LEN(teData) + 1
- lcBinRecord = BINTOC( lnLen, "4RS" ) + BINTOC( 1, "2RS" ) + CHR(tnDataType) + teData + CHR(0)
- ENDIF
+ lcBinRecord = BINTOC( lnLen, "4RS" ) + BINTOC( 1, "2RS" ) + CHR(tnDataConceptCode) + teData + CHR(0)
+
+ ENDCASE
RETURN lcBinRecord
ENDPROC
@@ -9030,7 +9318,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
ENDPROC
- PROCEDURE getMemoWithProperties
+ PROCEDURE getBinMemoFromProperties
RETURN ''
ENDPROC
@@ -9066,7 +9354,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
lcType = 'Field'
OTHERWISE
- ERROR 'Clase [' + THIS.Class + '] desconocida'
+ ERROR 'Clase [' + THIS.CLASS + '] desconocida'
ENDCASE
@@ -9095,7 +9383,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
WITH THIS AS CL_DBC_BASE OF 'FOXBIN2PRG.PRG'
.setNextID( @tnLastID )
- lcMemoWithProperties = .getMemoWithProperties()
+ lcMemoWithProperties = .getBinMemoFromProperties()
lcCodeMemo = .getCodeMemo()
lcObjectType = .getObjectType()
lcRI_Info = .getReferentialIntegrityInfo()
@@ -9106,7 +9394,7 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
( ObjectID ;
, ParentID ;
, ObjectType ;
- , ObjectName ;
+ , objectName ;
, Property ;
, CODE ;
, RIInfo ;
@@ -9255,19 +9543,6 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE
ENDPROC
- PROCEDURE DBSETPROP
- *---------------------------------------------------------------------------------------------------
- * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
- * cName (v! IN ) Nombre del objeto
- * cType (v! IN ) Tipo de objeto (Table, Index, Field, View, Relation)
- * cProperty (v! IN ) Nombre de la propiedad
- * ePropertyValue (v! IN ) Valor de la propiedad
- *---------------------------------------------------------------------------------------------------
- LPARAMETERS cName, cType, cProperty, ePropertyValue
-
- ENDPROC
-
-
PROCEDURE updateDBC
*---------------------------------------------------------------------------------------------------
* PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
@@ -9285,7 +9560,6 @@ DEFINE CLASS CL_DBC AS CL_DBC_BASE
loTables = THIS._Tables
loConnections = THIS._Connections
loViews = THIS._Views
- loRelations = THIS._Relations
CREATE DATABASE (tc_OutputFile)
CLOSE DATABASES
@@ -9640,24 +9914,25 @@ DEFINE CLASS CL_DBC_CONNECTION AS CL_DBC_BASE
ENDPROC
- PROCEDURE getMemoWithProperties
+ PROCEDURE getBinMemoFromProperties
LOCAL lcBinData
lcBinData = ''
-*fdb*
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Comment, 7 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DataSource, 29 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Asynchronous, 64 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._BatchMode, 65 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._ConnectString, 66 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( INT( VAL(THIS._ConnectTimeout) ) , 67 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DispLogin, 68 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DispWarnings, 69 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._IdleTimeout, 70 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._QueryTimeout, 71 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._PassWord, 72 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Transactions, 73 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._UserId, 74 )
- lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._WaitTime, 75 )
+
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Comment, THIS.getDBCPropertyIDByName('Comment') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DataSource, THIS.getDBCPropertyIDByName('DataSource') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._Asynchronous), THIS.getDBCPropertyIDByName('Asynchronous') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._BatchMode), THIS.getDBCPropertyIDByName('BatchMode') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._ConnectString, THIS.getDBCPropertyIDByName('ConnectString') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._ConnectTimeout) , THIS.getDBCPropertyIDByName('ConnectTimeout') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._DispLogin), THIS.getDBCPropertyIDByName('DispLogin') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._DispWarnings), THIS.getDBCPropertyIDByName('DispWarnings') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._IdleTimeout), THIS.getDBCPropertyIDByName('IdleTimeout') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._QueryTimeout), THIS.getDBCPropertyIDByName('QueryTimeout') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._PassWord, THIS.getDBCPropertyIDByName('PassWord') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._Transactions), THIS.getDBCPropertyIDByName('Transactions') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._UserId, THIS.getDBCPropertyIDByName('UserId') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._WaitTime), THIS.getDBCPropertyIDByName('WaitTime') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._PacketSize), THIS.getDBCPropertyIDByName('PacketSize') ) && Undocumented
RETURN lcBinData
ENDPROC
@@ -9876,7 +10151,7 @@ DEFINE CLASS CL_DBC_TABLE AS CL_DBC_BASE
loIndexes.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
CASE C_RELATIONS_I $ tcLine
- loRelations = THIS._Indexes
+ loRelations = THIS._Relations
loRelations.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
OTHERWISE && Propiedad de TABLE
@@ -9976,7 +10251,25 @@ DEFINE CLASS CL_DBC_TABLE AS CL_DBC_BASE
tnParentID = THIS.__ObjectID
THIS._Fields.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
THIS._Indexes.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
- loRelations.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
+ THIS._Relations.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
+ ENDPROC
+
+
+ PROCEDURE getBinMemoFromProperties
+ LOCAL lcBinData
+ lcBinData = ''
+
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( 1, THIS.getDBCPropertyIDByName('Class') ) && Clase 1
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Path, THIS.getDBCPropertyIDByName('Path') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Comment, THIS.getDBCPropertyIDByName('Comment') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._RuleExpression, THIS.getDBCPropertyIDByName('RuleExpression') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._RuleText, THIS.getDBCPropertyIDByName('RuleText') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._InsertTrigger, THIS.getDBCPropertyIDByName('InsertTrigger') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._UpdateTrigger, THIS.getDBCPropertyIDByName('UpdateTrigger') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DeleteTrigger, THIS.getDBCPropertyIDByName('DeleteTrigger') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._PrimaryKey, THIS.getDBCPropertyIDByName('PrimaryKey') )
+
+ RETURN lcBinData
ENDPROC
@@ -10060,9 +10353,9 @@ DEFINE CLASS CL_DBC_FIELDS_DB AS CL_DBC_COL_BASE
lcText = ''
_TALLY = 0
- SELECT LOWER(TB.ObjectName) FROM TABLABIN TB ;
+ 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) ;
+ AND TB2.objectName = PADR(LOWER(tcTable),128) ;
INTO ARRAY laFields
lnField_Count = _TALLY
@@ -10237,6 +10530,24 @@ DEFINE CLASS CL_DBC_FIELD_DB AS CL_DBC_BASE
ENDPROC
+ PROCEDURE getBinMemoFromProperties
+ LOCAL lcBinData
+ lcBinData = ''
+
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Comment, THIS.getDBCPropertyIDByName('Comment') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DefaultValue, THIS.getDBCPropertyIDByName('DefaultValue') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DisplayClass, THIS.getDBCPropertyIDByName('DisplayClass') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DisplayClassLibrary, THIS.getDBCPropertyIDByName('DisplayClassLibrary') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Caption, THIS.getDBCPropertyIDByName('Caption') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Format, THIS.getDBCPropertyIDByName('Format') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._InputMask, THIS.getDBCPropertyIDByName('InputMask') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._RuleExpression, THIS.getDBCPropertyIDByName('RuleExpression') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._RuleText, THIS.getDBCPropertyIDByName('RuleText') )
+
+ RETURN lcBinData
+ ENDPROC
+
+
ENDDEFINE
@@ -10323,9 +10634,9 @@ DEFINE CLASS CL_DBC_INDEXES_DB AS CL_DBC_COL_BASE
lcText = ''
_TALLY = 0
- SELECT LOWER(TB.ObjectName) FROM TABLABIN TB ;
+ 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) ;
+ AND TB2.objectName = PADR(LOWER(tcTable),128) ;
INTO ARRAY laIndexes
lnIndex_Count = _TALLY
@@ -10338,7 +10649,7 @@ DEFINE CLASS CL_DBC_INDEXES_DB AS CL_DBC_COL_BASE
loIndex = CREATEOBJECT('CL_DBC_INDEX_DB')
FOR X = 1 TO lnIndex_Count
- lcText = lcText + loIndex.toText( laIndexes(X) )
+ lcText = lcText + loIndex.toText( tcTable + '.' + laIndexes(X) )
ENDFOR
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
@@ -10446,7 +10757,7 @@ DEFINE CLASS CL_DBC_INDEX_DB AS CL_DBC_BASE
PROCEDURE toText
*---------------------------------------------------------------------------------------------------
* PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT)
- * tcIndex (v! IN ) Nombre del índice
+ * tcIndex (v! IN ) Nombre del índice en la forma "tabla.indice"
*---------------------------------------------------------------------------------------------------
LPARAMETERS tcIndex
@@ -10456,7 +10767,9 @@ DEFINE CLASS CL_DBC_INDEX_DB AS CL_DBC_BASE
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>>
- <<>> <>
+ <<>> <>
+ <<>> <>
+ <<>> <>
<<>>
ENDTEXT
@@ -10475,6 +10788,16 @@ DEFINE CLASS CL_DBC_INDEX_DB AS CL_DBC_BASE
ENDPROC
+ PROCEDURE getBinMemoFromProperties
+ LOCAL lcBinData
+ lcBinData = ''
+
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._IsUnique), THIS.getDBCPropertyIDByName('IsUnique') )
+
+ RETURN lcBinData
+ ENDPROC
+
+
ENDDEFINE
@@ -10632,6 +10955,8 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -10661,6 +10986,8 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE
_FetchSize = ''
_MaxRecords = ''
_Offline = ''
+ _RecordCount = ''
+ _Path = ''
_ParameterList = ''
_Prepared = ''
_RuleExpression = ''
@@ -10725,7 +11052,7 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE
loIndexes.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
CASE C_RELATIONS_I $ tcLine
- loRelations = THIS._Indexes
+ loRelations = THIS._Relations
loRelations.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines )
OTHERWISE && Propiedad de VIEW
@@ -10797,6 +11124,18 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE
<<>> <>
ENDTEXT
+ *-- ALGUNOS VALORES QUE EL DBGETPROP OFICIAL NO DEVUELVE
+ *fdb*
+ *-- Path
+ *-- OfflineRecordCount
+ IF NOT EMPTY(THIS._Offline) AND EVALUATE(THIS._Offline)
+ TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
+ <<>> <>
+ <<>> <>
+ ENDTEXT
+ ENDIF
+ *--
+
loFields = THIS._Fields
lcText = lcText + loFields.toText( tcView )
@@ -10839,6 +11178,41 @@ DEFINE CLASS CL_DBC_VIEW AS CL_DBC_BASE
tnParentID = THIS.__ObjectID
THIS._Fields.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
THIS._Indexes.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
+ THIS._Relations.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
+ ENDPROC
+
+
+ PROCEDURE getBinMemoFromProperties
+ LOCAL lcBinData
+ lcBinData = ''
+
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( 6, THIS.getDBCPropertyIDByName('Class') ) && Clase 6
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Comment, THIS.getDBCPropertyIDByName('Comment') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._RuleExpression, THIS.getDBCPropertyIDByName('RuleExpression') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._RuleText, THIS.getDBCPropertyIDByName('RuleText') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._ParameterList, THIS.getDBCPropertyIDByName('ParameterList') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._BatchUpdateCount), THIS.getDBCPropertyIDByName('BatchUpdateCount') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._ConnectName, THIS.getDBCPropertyIDByName('ConnectName') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._FetchMemo, THIS.getDBCPropertyIDByName('FetchMemo') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._FetchSize), THIS.getDBCPropertyIDByName('FetchSize') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._MaxRecords), THIS.getDBCPropertyIDByName('MaxRecords') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._ShareConnection), THIS.getDBCPropertyIDByName('ShareConnection') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._SourceType), THIS.getDBCPropertyIDByName('SourceType') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._SQL, THIS.getDBCPropertyIDByName('SQL') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Tables, THIS.getDBCPropertyIDByName('Tables') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._SendUpdates), THIS.getDBCPropertyIDByName('SendUpdates') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._UpdateType), THIS.getDBCPropertyIDByName('UpdateType') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._UseMemoSize), THIS.getDBCPropertyIDByName('UseMemoSize') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._WhereType), THIS.getDBCPropertyIDByName('WhereType') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._Prepared), THIS.getDBCPropertyIDByName('Prepared') ) && Undocumented
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._CompareMemo), THIS.getDBCPropertyIDByName('CompareMemo') ) && Undocumented
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._FetchAsNeeded), THIS.getDBCPropertyIDByName('FetchAsNeeded') ) && Undocumented
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._Offline), THIS.getDBCPropertyIDByName('Offline') ) && Undocumented
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._RecordCount), THIS.getDBCPropertyIDByName('RecordCount') ) && Undocumented
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( 0, THIS.getDBCPropertyIDByName('undocumented_view_prop_85') ) && Undocumented
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._AllowSimultaneousFetch), THIS.getDBCPropertyIDByName('AllowSimultaneousFetch') ) && Undocumented
+
+ RETURN lcBinData
ENDPROC
@@ -10924,9 +11298,9 @@ DEFINE CLASS CL_DBC_FIELDS_VW AS CL_DBC_COL_BASE
lcText = ''
_TALLY = 0
- SELECT LOWER(TB.ObjectName) FROM TABLABIN TB ;
+ 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) ;
+ AND TB2.objectName = PADR(LOWER(tcView),128) ;
INTO ARRAY laFields
lnField_Count = _TALLY
@@ -11086,6 +11460,8 @@ DEFINE CLASS CL_DBC_FIELD_VW AS CL_DBC_BASE
<<>> <>
<<>> <>
<<>> <>
+ <<>> <>
+ <<>> <>
<<>> <>
<<>> <>
<<>> <>
@@ -11112,6 +11488,28 @@ DEFINE CLASS CL_DBC_FIELD_VW AS CL_DBC_BASE
ENDPROC
+ PROCEDURE getBinMemoFromProperties
+ LOCAL lcBinData
+ lcBinData = ''
+
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Comment, THIS.getDBCPropertyIDByName('Comment') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DataType, THIS.getDBCPropertyIDByName('DataType') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._KeyField), THIS.getDBCPropertyIDByName('KeyField') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( EVALUATE(THIS._Updatable), THIS.getDBCPropertyIDByName('UpdatableField') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._UpdateName, THIS.getDBCPropertyIDByName('UpdateName') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DefaultValue, THIS.getDBCPropertyIDByName('DefaultValue') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DisplayClass, THIS.getDBCPropertyIDByName('DisplayClass') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._DisplayClassLibrary, THIS.getDBCPropertyIDByName('DisplayClassLibrary') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Caption, THIS.getDBCPropertyIDByName('Caption') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._Format, THIS.getDBCPropertyIDByName('Format') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._InputMask, THIS.getDBCPropertyIDByName('InputMask') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._RuleExpression, THIS.getDBCPropertyIDByName('RuleExpression') )
+ lcBinData = lcBinData + THIS.getBinPropertyDataRecord( THIS._RuleText, THIS.getDBCPropertyIDByName('RuleText') )
+
+ RETURN lcBinData
+ ENDPROC
+
+
ENDDEFINE
@@ -11357,14 +11755,14 @@ DEFINE CLASS CL_DBC_RELATION AS CL_DBC_BASE
ENDPROC
- PROCEDURE getMemoWithProperties
+ PROCEDURE getBinMemoFromProperties
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.
+ *_ChildTable is used to link the name of the related table.
RETURN lcBinData
ENDPROC