Index: src/com/iver/cit/gvsig/geoprocess/core/fmap/DefinitionUtils.java =================================================================== --- src/com/iver/cit/gvsig/geoprocess/core/fmap/DefinitionUtils.java (revision 39491) +++ src/com/iver/cit/gvsig/geoprocess/core/fmap/DefinitionUtils.java (working copy) @@ -110,9 +110,12 @@ solution.setName(layer.getName()); solution.setShapeType(layer.getShapeType()); SelectableDataSource datasource = layer.getRecordset(); - int numFields = datasource.getFieldCount(); - FieldDescription[] fields = - new FieldDescription[numFields]; + //int numFields = datasource.getFieldCount(); + //FieldDescription[] fields = + // new FieldDescription[numFields]; + FieldDescription[] fieldsDescription = null; + fieldsDescription = datasource.getFieldsDescription(); + /* FieldDescription fieldDesc = null; for(int i = 0; i < numFields; i++){ fieldDesc = new FieldDescription(); @@ -125,6 +128,8 @@ fields[i] = fieldDesc; } solution.setFieldsDesc(fields); + */ + solution.setFieldsDesc(fieldsDescription); return solution; } Index: src/com/iver/cit/gvsig/geoprocess/impl/merge/fmap/MergeVisitor.java =================================================================== --- src/com/iver/cit/gvsig/geoprocess/impl/merge/fmap/MergeVisitor.java (revision 39491) +++ src/com/iver/cit/gvsig/geoprocess/impl/merge/fmap/MergeVisitor.java (working copy) @@ -135,6 +135,19 @@ }else{ values[i] = recordset.getFieldValue(index, fieldIndex); } + // afalciano: ...but also field length and precision + int fieldLength = fields[i].getFieldLength(); + int fieldDecimalCount = fields[i].getFieldDecimalCount(); + FieldDescription[] recordsetFieldsDescription = recordset.getFieldsDescription(); + int recordsetLength = recordsetFieldsDescription[fieldIndex].getFieldLength(); + int recordsetDecimalCount = recordsetFieldsDescription[fieldIndex].getFieldDecimalCount(); + if(fieldLength != recordsetLength){ + fields[i].setFieldLength(recordsetLength); + } + if(fieldDecimalCount != recordsetDecimalCount){ + fields[i].setFieldDecimalCount(recordsetLength); + } + } } catch (ReadDriverException e) { throw new ProcessVisitorException(recordset.getName(),e,"Error en merge al tratar de leer el atributo de un feature de una de las capas");