- Fix: Respetar los valores de los campos autoinc y sobre todo las claves autoinc de los registros

This commit is contained in:
fdbozzo
2016-06-08 23:00:41 +02:00
parent 2ac24da47d
commit 2f2e23066c

View File

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