Index: src/com/iver/cit/gvsig/geoprocess/impl/dissolve/fmap/SingleFieldDissolveCriteria.java =================================================================== --- src/com/iver/cit/gvsig/geoprocess/impl/dissolve/fmap/SingleFieldDissolveCriteria.java (revision 39491) +++ src/com/iver/cit/gvsig/geoprocess/impl/dissolve/fmap/SingleFieldDissolveCriteria.java (working copy) @@ -77,6 +77,7 @@ import com.iver.cit.gvsig.fmap.drivers.ILayerDefinition; import com.iver.cit.gvsig.fmap.drivers.SHPLayerDefinition; import com.iver.cit.gvsig.fmap.layers.FLyrVect; +import com.iver.cit.gvsig.fmap.layers.SelectableDataSource; import com.iver.cit.gvsig.geoprocess.core.fmap.DefinitionUtils; import com.iver.cit.gvsig.geoprocess.core.fmap.SummarizationFunction; import com.iver.cit.gvsig.geoprocess.core.fmap.XTypes; @@ -234,13 +235,22 @@ getFieldIndexByName(dissolveField); int fieldType = layer.getRecordset(). getFieldType(dissolveFieldIndex); - int fieldLenght = DefinitionUtils. - getDataTypeLength(fieldType); + //int fieldLenght = DefinitionUtils. + // getDataTypeLength(fieldType); + SelectableDataSource recordset = layer.getRecordset(); + FieldDescription[] recordsetFieldsDescription = recordset. + getFieldsDescription(); + int fieldLength = recordsetFieldsDescription[dissolveFieldIndex]. + getFieldLength(); + int fieldDecimalCount = recordsetFieldsDescription[dissolveFieldIndex]. + getFieldDecimalCount(); + description.setFieldName(dissolveField); description.setFieldType(fieldType); - description.setFieldLength(fieldLenght); + description.setFieldLength(fieldLength); if(DefinitionUtils.isNumeric(description)){ - description.setFieldDecimalCount(DefinitionUtils.NUM_DECIMALS); + //description.setFieldDecimalCount(DefinitionUtils.NUM_DECIMALS); + description.setFieldDecimalCount(fieldDecimalCount); } fields.add(description); } catch (ReadDriverException e) {