# Working with CalcQuickBase in WinForms Calculation Engine

27 Jul 20215 minutes to read

The simplest way to use Essential Calculate is through an instance of its CalcQuickBase class. This class provides options to directly parse and compute a formula, or register variable names that can later be used in more complex formulas involving these variables.
After registering the variables,it provides options to perform manual or automatic calculations. `CalcQuickBase` is predefined derived class from `ICalcData` interface.

## Compute using values

The ParseAndCompute method of `CalcQuickBase` parses and computes the given formula string and returns the computed value.

``````CalcQuickBase calcQuick = new CalcQuickBase();

//Computing Expressions,

string formula = "(5+25)*2";
string result = calcQuick.ParseAndCompute(formula);

//Computing In-Built formulas,

string formula = "SUM(5,5)";
string result = calcQuick.ParseAndCompute(formula);``````

## Compute using Variables

Computation using variables is performed by evaluating the formulas or expressions with the `CalcQuickBase` registered variable key values.

### Register variable names

To register the variables in `CalcQuickBase`, it must be enclosed within square brackets “[ ]”. Eg. [A]. These registered variable names are indexer keys.
A variable name must begin with an alphabetical character and can contain only letters and digits. It is not case-sensitive. To register a string as a variable name and
simply index the `CalcQuickBase` object with the name. To set its value, assign the value or formula to the registered variable name.

``````CalcQuickBase calcQuick = new CalcQuickBase();
calcQuick["A"] = "5";
calcQuick["B"] = "6";
calcQuick["C"] = "11";``````

### Evaluation

#### Compute directly with variables

If the user wants the variable to hold a string which is a formula or be treated as a formula, then begin that string with FormulaCharacter of `CalcQuickBase`. The default value of this `FormulaCharacter` is “=”.
so, that it is parsed and computed through the indexing code.

Below example shows the computation of formula or expressions directly with registered variable keys.

``````CalcQuickBase calcQuick = new CalcQuickBase();
calcQuick["A"] = "5";
calcQuick["B"] = "6";
calcQuick["C"] = "11";

//Computing expressions,

calcQuick["result"] = "=([A]+[B])/[C]";

//Computing In-Built formulas,

calcQuick["result"] = "=SUM([A],[B])"``````

#### Compute using ParseAndCompute method

The ParseAndCompute method of `CalcQuickBase` parses and computes the given formula string and returns the computed value.
Any string that is passed in `ParseAndCompute` method of `CalcQuickBase` directly will be treated as a formula, whether or not it begins with FormulaCharacter.

Below example shows the computation of formula or expressions using `ParseAndCompute` method of `CalcQuickBase`.

``````CalcQuickBase calcQuick = new CalcQuickBase();
calcQuick["A"] = "5";
calcQuick["B"] = "6";
calcQuick["C"] = "11";

//Computing expressions,

calcQuick["result"]  = calcQuick.ParseAndCompute("([A]+[B])/[C]");

//Computing in built formulas,

calcQuick["result"]  = calcQuick.ParseAndCompute("SUM([A],[B])");``````

For more information regarding `ParseAndCompute` method, refer here.

## Automatic calculations

By default, `CalcQuickBase` does not try to track any dependencies among the variables. To enable automatic recalculation of dependent variables,
set the AutoCalc property of `CalcQuickBase` to `True`. Once this is done, the `CalcQuickBase` object maintains the required dependency information.

RefreshAllCalculations method of `CalcQuickBase` forces the recalculation of all variables registered with the `CalcQuickBase` object.
This has to be done after the `AutoCalc` property has been set to `True`, so that the dependencies between variables can be monitored.

Below example shows the computation of formula or expressions using `ParseAndCompute` method of `CalcQuickBase`

``````//Initialize,
CalcQuickBase calcQuick = new CalcQuickBase();

//Registering keys with values,
calcQuick["A"] = "5";
calcQuick["B"] = "6";
calcQuick["C"] = "11";

//Computing in built formulas,
calcQuick["result"]  = calcQuick.ParseAndCompute("SUM([A],[B],[C])");

//Setting the Auto calculation mode,
calcQuick.AutoCalc = true;

//To recompute formulas stored in CalcQuickBase object,
calcQuick.RefreshAllCalculations();

//Changing the variable "C" value to "3",
calcQuick["C"] = "3";

//Output result after the change of variable "C",
var Output = calcQuick["result"];``````

Below example shows the computation of formula or expressions without using `ParseAndCompute` method of `CalcQuickBase`

``````//Initialize,
CalcQuickBase calcQuick = new CalcQuickBase();

//Registering keys with values,
calcQuick["A"] = "5";
calcQuick["B"] = "6";
calcQuick["C"] = "11";

//Computing in built formulas,
calcQuick["result"] = "=[A]+[B]+[C]";

//Setting the Auto calculation mode,
calcQuick.AutoCalc = true;

//Changing the variable "C" value to "3",
calcQuick["C"] = "3";

//To recompute formulas stored in CalcQuickBase object,
calcQuick.RefreshAllCalculations();

//Output result after the change of variable "C",
var Output = calcQuick["result"];``````

## Reset keys

Registered variables or indexer keys registered with `CalcQuickBase` object can be cleared or reset by using ResetKeys method of `CalcQuickBase` class.

``````//Initialize,
CalcQuickBase calcQuick = new CalcQuickBase();

//Registering keys with values,
calcQuick["A"] = "5";
calcQuick["B"] = "6";
calcQuick["C"] = "11";

//Clears the registered keys,
calcQuick.ResetKeys();``````