# Problems with the history.removeForm() method

**URL:** <https://forum.servoy.com/t/problems-with-the-history-removeform-method/15509>\
**Category:** Classic Servoy\
**Created:** [February 14, 2012, 11:15am UTC](https://forum.servoy.com/t/problems-with-the-history-removeform-method/15509 "2012-02-14T11:15:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![pentamsi](https://avatars.discourse-cdn.com/v4/letter/p/3ec8ea/32.png) [@pentamsi](https://forum.servoy.com/u/pentamsi)\
**Post date:** [February 14, 2012, 11:15am UTC](https://forum.servoy.com/t/problems-with-the-history-removeform-method/15509/1 "2012-02-14T11:15:32Z")

</div>

Hello, I have a problem and i don’t know why! The problem is i have a form called “encolumnadoResultados\_tbl” and i want to modify with the solution model. First I remove the form with this instruction:

```auto
history.removeForm("encolumnadoResultados_tbl");

```

later make all the things with the solution model, add fields, dataproviders and more. But when i quit of the screen, and later enter again. The error is this

 ![](https://canada1.discourse-cdn.com/flex010/uploads/servoy/original/2X/c/c3ba971137f66443d923245b1c5770580ffd5106.png)  
 ![](https://canada1.discourse-cdn.com/flex010/uploads/servoy/original/2X/6/6c31119dc84a901fcbc2193d1109003129450612.png)

I don’t know why the elements of my form are deleted or if i do anything wrong. I use the servoy framework and I don’t know if have any interference. Any idea?

If i coment the line of history and the operations before of this, the error don’t ocurre, for this reason i think the problem is with the history.removeForm().

---

<div class="post-metadata">

**Author:** ![jcompagner](https://yyz2.discourse-cdn.com/flex010/user_avatar/forum.servoy.com/jcompagner/32/4889_2.png) [@jcompagner](https://forum.servoy.com/u/jcompagner)\
**Post date:** [February 16, 2012, 2:40pm UTC](https://forum.servoy.com/t/problems-with-the-history-removeform-method/15509/2 "2012-02-16T14:40:06Z")

</div>

without seeing way more code what you exactly do, its very hard to help

---

<div class="post-metadata">

**Author:** ![pentamsi](https://avatars.discourse-cdn.com/v4/letter/p/3ec8ea/32.png) [@pentamsi](https://forum.servoy.com/u/pentamsi)\
**Post date:** [February 16, 2012, 3:23pm UTC](https://forum.servoy.com/t/problems-with-the-history-removeform-method/15509/3 "2012-02-16T15:23:39Z")

</div>

Hello, this is the function that i execute, and use the solutionModel to change the dataproviders and create the new form elements. With the first acces into the form i have no problem, but when i close the tab of the framework and enter againd, show me the error.

```auto
function fillThirdTab() {

	// The foundset with the sheets
	var hojasFs = forms.hojasBasicInfo_tbl.foundset;

	// The array with the field names
	var tableFieldsArray = new Array("hoja_codigo", "hoja_fecha");

	// The array with the field types
	var types = new Array(DM_COLUMNTYPE.TEXT, DM_COLUMNTYPE.DATETIME);

	// The tests of the selected element
	var testsOfElement = getTestsOfElement();

	// The array with the valid tests
	var validTests = new Array();

	// Remove from history
	history.removeForm("encolumnadoResultados_tbl");

	// Get the form
	var myForm = solutionModel.getForm("encolumnadoResultados_tbl");
	deleteFields(myForm);

	// Get the info of one field
	var selectField = myForm.getField("hoja_fecha");
	var border = selectField.borderType;
	var locationFieldX = selectField.x;
	var locationFieldY = selectField.y;

	// Get the info of one label
	var selectLabel = myForm.getLabel("hoja_fecha_label");
	var locationLabelX = selectLabel.x;
	var locationLabelY = selectLabel.y;

	// Fill all the headers
	for (var i = 1; i <= testsOfElement.getSize(); i++) {

		// Get one test
		var oneTest = testsOfElement.getRecord(i);

		// If the test are selected add
		if (selectedTests[oneTest.ensayo_id] == 1) {

			// The field name
			var fieldName = oneTest.ensayos_to_ensayos_std.ensayo_codigo + "_" + oneTest.ensayo_id;

			// Put the header title
			tableFieldsArray.push(fieldName);

			// Create new field for the info
			var newField = myForm.newField(fieldName, JSField.TEXT_FIELD, locationFieldX + 10, locationFieldY + 20, 200, 20);
			newField.name = fieldName;
			newField.borderType = border;
			newField.editable = false;

			// Create a new label for the field
			var newLabel = myForm.newLabel(oneTest.ensayos_to_ensayos_std.ensayo_codigo, locationLabelX, locationLabelY + 20, 100, 200);
			newLabel.labelFor = fieldName;
			newLabel.styleClass = "table";

			// Add the type into the array of types
			types.push(DM_COLUMNTYPE.TEXT);

			// add the test to the valid tests
			validTests.push(oneTest.ensayo_id);
		}
	}

	// Convert the array into a string
	var testsToFind = validTests.join("||");

	// Create a new dataset with the fields
	var dataSet = databaseManager.createEmptyDataSet(0, tableFieldsArray);

	// Travel all the foundset and put the info into an array
	for (var j = 1; j <= hojasFs.getSize(); j++) {

		var sheetsLineTestsArray = new Array();

		// Get one sheet
		var oneSheet = hojasFs.getRecord(j);

		// Get the lines of the sheet
		var linesOfSheet = oneSheet.hojas_to_hojas_lin.duplicateFoundSet();

		// Find all the lines with the status 3 or 4
		linesOfSheet.find();
		linesOfSheet.hoja_lin_estado = 3 + "||" + 4;
		if (numericalSheets == 1) linesOfSheet.hoja_lin_valor = "!^=";
		linesOfSheet.ensayo_id = testsToFind;
		linesOfSheet.search();

		// Sort the foundset by date and ensayo_id
		linesOfSheet.sort("hoja_lin_fecha_plan asc");

		// Travel all the sheet lines
		for (var k = 1; k <= linesOfSheet.getSize(); k++) {

			// The array for the new record
			var newRecord = new Array();

			// Get one sheet
			var oneSheetLine = linesOfSheet.getRecord(k);
			var nextSheetLine = linesOfSheet.getRecord(k + 1)

			sheetsLineTestsArray[oneSheetLine.ensayo_id.toString()] = oneSheetLine.tmp_resultado;
			// If the date are different
			if (globals["compareDates"](oneSheetLine.hoja_lin_fecha_plan, nextSheetLine.hoja_lin_fecha_plan) != 0) {

				newRecord.push(oneSheetLine.hojas_lin_to_hojas.hoja_codigo);
				newRecord.push(oneSheetLine.hoja_lin_fecha_plan);

				for (var l = 0; l < tableFieldsArray.length - 2; l++) {
					/**@type {String}*/
					var fieldTitle = tableFieldsArray[l + 2];
					var fieldParts = fieldTitle.split("_");
					var testCode = fieldParts[0];
					var testId = utils.stringToNumber(fieldParts[1]);

					if (sheetsLineTestsArray[testId]) {
						newRecord.push(sheetsLineTestsArray[testId]);
					} else {
						newRecord.push("");
					}
				}
				sheetsLineTestsArray = new Array();

				// Add the record to the dataset
				dataSet.addRow(newRecord);
			}
		}
	}

	var dataSource = dataSet.createDataSource("test_info", types);

	// Set the datasource
	myForm.dataSource = dataSource;

	myForm.getField("hoja_codigo").dataProviderID = "hoja_codigo";
	myForm.getField("hoja_fecha").dataProviderID = "hoja_fecha";
}

```

And I don’t know, why after the first acces, and close the form delete all of my elements in the form, If i never in the function of cleaned up the elements in the form delete the first two.

```auto
function deleteFields(myForm) {
	var fieldsArray = myForm.getFields();
	for (var i = 0; i < fieldsArray.length; i++) {
		/**@type {JSField}*/
		var oneField = fieldsArray[i];
		if(oneField.name.indexOf("hoja_")==-1){
			myForm.removeField(oneField.name)
		}
	}
}

```

Thanks for all.

---

<div class="post-metadata">

**Author:** ![pentamsi](https://avatars.discourse-cdn.com/v4/letter/p/3ec8ea/32.png) [@pentamsi](https://forum.servoy.com/u/pentamsi)\
**Post date:** [February 20, 2012, 4:12pm UTC](https://forum.servoy.com/t/problems-with-the-history-removeform-method/15509/4 "2012-02-20T16:12:55Z")

</div>

Hello. I solved the problem using the controller.recreateUI instead of history.removeForm, at the end of the changes with the solution model.
