- Fix: Respetar los valores de los campos autoinc y sobre todo las claves autoinc de los registros
This commit is contained in:
@@ -12037,7 +12037,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
|
|||||||
|
|
||||||
TRY
|
TRY
|
||||||
LOCAL lnCodError, loEx AS EXCEPTION, laCodeLines(1), lnCodeLines, laLineasExclusion(1), lnBloquesExclusion, I ;
|
LOCAL lnCodError, loEx AS EXCEPTION, laCodeLines(1), lnCodeLines, laLineasExclusion(1), lnBloquesExclusion, I ;
|
||||||
, lnIDInputFile, lnFileCount, laConfig(1), lcConfigItem, lc_DBF_Conversion_Support ;
|
, lnIDInputFile, lnFileCount, laConfig(1), lcConfigItem, lc_DBF_Conversion_Support, lcAlterTable ;
|
||||||
, lcTempDBC, llImportData ;
|
, lcTempDBC, llImportData ;
|
||||||
, loDBF_CFG AS CL_DBF_CFG OF 'FOXBIN2PRG.PRG'
|
, loDBF_CFG AS CL_DBF_CFG OF 'FOXBIN2PRG.PRG'
|
||||||
STORE 0 TO lnCodError, lnCodeLines
|
STORE 0 TO lnCodError, lnCodeLines
|
||||||
@@ -12086,7 +12086,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
toFoxBin2Prg.updateProcessedFile( lnIDInputFile )
|
toFoxBin2Prg.updateProcessedFile( lnIDInputFile )
|
||||||
.writeBinaryFile_STRUCTURE( @toTable, @toFoxBin2Prg )
|
.writeBinaryFile_STRUCTURE( @toTable, @toFoxBin2Prg, @lcAlterTable )
|
||||||
|
|
||||||
IF llImportData AND lnCodeLines > 1 AND toTable._I > 1 THEN
|
IF llImportData AND lnCodeLines > 1 AND toTable._I > 1 THEN
|
||||||
*-- Identifico los registros de la tabla y los agrego
|
*-- Identifico los registros de la tabla y los agrego
|
||||||
@@ -12094,6 +12094,10 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
|
|||||||
toTable.analyzeCodeBlock( C_TABLE_I, @laCodeLines, @I, lnCodeLines )
|
toTable.analyzeCodeBlock( C_TABLE_I, @laCodeLines, @I, lnCodeLines )
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
IF NOT EMPTY(lcAlterTable)
|
||||||
|
EXECSCRIPT(lcAlterTable)
|
||||||
|
ENDIF
|
||||||
|
|
||||||
.writeBinaryFile_INDEXES( @toTable, @toFoxBin2Prg )
|
.writeBinaryFile_INDEXES( @toTable, @toFoxBin2Prg )
|
||||||
|
|
||||||
ENDWITH && THIS
|
ENDWITH && THIS
|
||||||
@@ -12130,7 +12134,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
|
|||||||
|
|
||||||
|
|
||||||
PROCEDURE writeBinaryFile_STRUCTURE
|
PROCEDURE writeBinaryFile_STRUCTURE
|
||||||
LPARAMETERS toTable, toFoxBin2Prg
|
LPARAMETERS toTable, toFoxBin2Prg, tcAlterTable
|
||||||
*-- -----------------------------------------------------------------------------------------------------------
|
*-- -----------------------------------------------------------------------------------------------------------
|
||||||
#IF .F.
|
#IF .F.
|
||||||
LOCAL toTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG'
|
LOCAL toTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG'
|
||||||
@@ -12148,7 +12152,7 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
|
|||||||
loDBFUtils = CREATEOBJECT('CL_DBF_UTILS')
|
loDBFUtils = CREATEOBJECT('CL_DBF_UTILS')
|
||||||
|
|
||||||
STORE 0 TO lnCodError
|
STORE 0 TO lnCodError
|
||||||
STORE '' TO lcIndex, lcFieldDef
|
STORE '' TO lcIndex, lcFieldDef, tcAlterTable
|
||||||
lnDataSessionID = toFoxBin2Prg.DATASESSIONID
|
lnDataSessionID = toFoxBin2Prg.DATASESSIONID
|
||||||
|
|
||||||
*-- addProcessedFile( tcFile, tcInOutType, tcProcessed, tcHasErrors, tcSupported, tcExpanded )
|
*-- addProcessedFile( tcFile, tcInOutType, tcProcessed, tcHasErrors, tcSupported, tcExpanded )
|
||||||
@@ -12164,11 +12168,11 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
|
|||||||
ERASE (FORCEEXT(.c_OutputFile, 'CDX'))
|
ERASE (FORCEEXT(.c_OutputFile, 'CDX'))
|
||||||
|
|
||||||
IF EMPTY(toTable._Database)
|
IF EMPTY(toTable._Database)
|
||||||
lcCreateTable = 'CREATE TABLE "' + .c_OutputFile + '" FREE CodePage=' + toTable._CodePage + ' ('
|
lcCreateTable = 'CREATE TABLE "' + .c_OutputFile + '" FREE CodePage=' + toTable._CodePage + ' ;' + CR_LF + ' ('
|
||||||
ELSE
|
ELSE
|
||||||
lcTempDBC = FORCEPATH( '_FB2P', JUSTPATH(.c_OutputFile) )
|
lcTempDBC = FORCEPATH( '_FB2P', JUSTPATH(.c_OutputFile) )
|
||||||
CREATE DATABASE ( lcTempDBC )
|
CREATE DATABASE ( lcTempDBC )
|
||||||
lcCreateTable = 'CREATE TABLE "' + .c_OutputFile + '" CodePage=' + toTable._CodePage + ' ('
|
lcCreateTable = 'CREATE TABLE "' + .c_OutputFile + '" CodePage=' + toTable._CodePage + ' ;' + CR_LF + ' ('
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
toTable._TableName = .c_OutputFile
|
toTable._TableName = .c_OutputFile
|
||||||
@@ -12177,8 +12181,12 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
|
|||||||
FOR EACH loField IN toTable._Fields FOXOBJECT
|
FOR EACH loField IN toTable._Fields FOXOBJECT
|
||||||
lcLongDec = ''
|
lcLongDec = ''
|
||||||
|
|
||||||
|
IF NOT EMPTY(lcFieldDef)
|
||||||
|
lcFieldDef = lcFieldDef + ';' + CR_LF + ', '
|
||||||
|
ENDIF
|
||||||
|
|
||||||
*-- Nombre, Tipo
|
*-- Nombre, Tipo
|
||||||
lcFieldDef = lcFieldDef + ', ' + loField._Name + ' ' + loField._Type
|
lcFieldDef = lcFieldDef + loField._Name + ' ' + loField._Type
|
||||||
|
|
||||||
*-- Longitud
|
*-- Longitud
|
||||||
IF INLIST( loField._Type, 'C', 'N', 'F', 'Q', 'V' )
|
IF INLIST( loField._Type, 'C', 'N', 'F', 'Q', 'V' )
|
||||||
@@ -12216,15 +12224,19 @@ DEFINE CLASS c_conversor_prg_a_dbf AS c_conversor_prg_a_bin
|
|||||||
*-- of DBF with this field.
|
*-- of DBF with this field.
|
||||||
lcFieldDef = lcFieldDef + ' AUTOINC NEXTVAL 1 STEP ' + loField._AutoInc_Step
|
lcFieldDef = lcFieldDef + ' AUTOINC NEXTVAL 1 STEP ' + loField._AutoInc_Step
|
||||||
ELSE
|
ELSE
|
||||||
lcFieldDef = lcFieldDef + ' AUTOINC NEXTVAL ' + loField._AutoInc_NextVal + ' STEP ' + loField._AutoInc_Step
|
tcAlterTable = tcAlterTable + ' ;' + CR_LF + ' ALTER ' + loField._Name + ' ' + loField._Type + ' AUTOINC NEXTVAL ' + loField._AutoInc_NextVal + ' STEP ' + loField._AutoInc_Step
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
loField = NULL
|
loField = NULL
|
||||||
ENDFOR
|
ENDFOR
|
||||||
|
|
||||||
lcCreateTable = lcCreateTable + SUBSTR(lcFieldDef,3) + ')'
|
lcCreateTable = lcCreateTable + lcFieldDef + ')'
|
||||||
&lcCreateTable.
|
EXECSCRIPT(lcCreateTable)
|
||||||
|
|
||||||
|
IF NOT EMPTY(tcAlterTable)
|
||||||
|
tcAlterTable = 'ALTER TABLE "' + .c_OutputFile + '" ' + tcAlterTable
|
||||||
|
ENDIF
|
||||||
|
|
||||||
*-- Hook para permitir ejecuci<63>n externa (por ejemplo, para rellenar la tabla con datos)
|
*-- Hook para permitir ejecuci<63>n externa (por ejemplo, para rellenar la tabla con datos)
|
||||||
IF NOT EMPTY(toFoxBin2Prg.run_AfterCreateTable)
|
IF NOT EMPTY(toFoxBin2Prg.run_AfterCreateTable)
|
||||||
@@ -24015,8 +24027,8 @@ DEFINE CLASS CL_DBF_RECORD AS CL_CUS_BASE
|
|||||||
|
|
||||||
ENDCASE
|
ENDCASE
|
||||||
|
|
||||||
IF lcFieldType == 'G' OR lcFieldType == 'I' AND NOT EMPTY(INT(VAL(loField._AutoInc_Step)))
|
IF lcFieldType == 'G'
|
||||||
*-- Saltar campos General o Integer con AutoInc
|
*-- Saltar campos General
|
||||||
ELSE
|
ELSE
|
||||||
REPLACE (lcFieldName) WITH (luValue)
|
REPLACE (lcFieldName) WITH (luValue)
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|||||||
Reference in New Issue
Block a user