public cReportFormulaInt add() { try { cReportFormulaInt c = new cReportFormulaInt(); this.BaseAdd(getDummyKey(), c); return(c); } catch { return(null); } }
private object pResultFunctionInt(cReportFormulaInt fint) { switch (fint.getFormulaType()) { case csRptFormulaType.CSRPTFAVERAGE: return resultAverage(fint); case csRptFormulaType.CSRPTFSUM: return resultSum(fint); case csRptFormulaType.CSRPTFGETSTRING: return resultGetString(fint); case csRptFormulaType.CSRPTFSUMTIME: return resultSumTime(fint); case csRptFormulaType.CSRPTMAX: return resultMax(fint); case csRptFormulaType.CSRPTMIN: return resultMin(fint); case csRptFormulaType.CSRPTCOUNT: return resultCount(fint); case csRptFormulaType.CSRPTFNUMBERTOSTRING: return resultNumberToString(fint); case csRptFormulaType.CSRPTISEQUAL: return resultIsEqual(fint); case csRptFormulaType.CSRPTISNOTEQUAL: return resultIsNotEqual(fint); case csRptFormulaType.CSRPTISGREATERTHAN: return resultIsGreaterThan(fint); case csRptFormulaType.CSRPTISLESSTHAN: return resultIsLessThan(fint); case csRptFormulaType.CSRPTFPAGENUMBER: return resultPageNumber(); case csRptFormulaType.CSRPTFTOTALPAGES: return resultTotalPages(); case csRptFormulaType.CSRPTFVAL: return resultValue(fint); case csRptFormulaType.CSRPTLENGTH: return resultLength(fint); case csRptFormulaType.CSRPTTEXTREPLACE: return resultTextReplace(fint); case csRptFormulaType.CSRPTFCALCULO: return resultCalculo(fint); case csRptFormulaType.CSRPTDECLAREVAR: // nothing to do break; case csRptFormulaType.CSRPTGETVAR: return resultGetVar(fint); case csRptFormulaType.CSRPTGETPARAM: return resultGetParam(fint); case csRptFormulaType.CSRPTSETVAR: // nothing to do break; case csRptFormulaType.CSRPTADDTOVAR: // nothing to do break; case csRptFormulaType.CSRPTGETDATAFROMRSAD: return resultGetDataFromRsAd(fint); case csRptFormulaType.CSRPTGETDATAFROMRS: return resultGetDataFromRs(fint); case csRptFormulaType.CSRPTGROUPTOTAL: return resultGroupTotal(fint); case csRptFormulaType.CSRPTGROUPMAX: return resultGroupMax(fint); case csRptFormulaType.CSRPTGROUPMIN: return resultGroupMin(fint); case csRptFormulaType.CSRPTGROUPAVERAGE: return resultGroupAverage(fint); case csRptFormulaType.CSRPTGROUPPERCENT: return resultGroupPercent(fint); case csRptFormulaType.CSRPTGROUPCOUNT: return resultGroupCount(fint); case csRptFormulaType.CSRPTGROUPLINENUMBER: return resultGroupLineNumber(fint); case csRptFormulaType.CSRPTISINRS: return resultIsInRs(fint); } return null; }
private object pAddFormulaInt(String functionName, String code) { // the firs thing we need to do is add this internal formula // to the internal formula collection of this formula // m_fint = m_formula.getFormulasInt().add(); return pEvalSyntax(functionName, code, true, null); }
private void pSetParams(cReportFormulaInt fint, String parameters) { String[] vParams = null; int i = 0; parameters = parameters.Trim(); if (parameters.Length > 2) { parameters = parameters.Substring(1, parameters.Length - 2); parameters = parameters.Trim(); vParams = parameters.Split('|'); for (i = 0; i < vParams.Length; i++) { fint.getParameters().item(i).setValue(vParams[i].Trim()); } } }
private void evalGroupLineNumber(cReportFormulaInt fint) { if (fint.getVariables().item(C_GROUPLINENUMBER) == null) { fint.getVariables().add(null, C_GROUPLINENUMBER); } cReportVariable w_item = fint.getVariables().item(C_GROUPLINENUMBER); // the LineNumber function is for numbers w_item.setValue( m_report.getGroupLineNumber( int.Parse(fint.getParameters().item(cReportGlobals.C_KEYINDEXGROUP).getValue()))); }
private void evalIsLessThan(cReportFormulaInt fint) { if (fint.getVariables().item(C_ISLESSTHAN) == null) { fint.getVariables().add(null, C_ISLESSTHAN); } cReportVariable w_item = fint.getVariables().item(C_ISLESSTHAN); // the IsLessThan function is for numbers // object value = m_report.getValue(fint.getParameters().item(0).getValue(), true); object constValue = fint.getParameters().item(1).getValue(); if (value.GetType() == typeof(String)) { String strValue = value.ToString(); String strConstValue = constValue.ToString(); if (String.Compare(strValue.ToString(), strConstValue.ToString(), StringComparison.CurrentCulture) < 0) { w_item.setValue(true); } else { w_item.setValue(false); } } else { if ((double)value < (double)constValue) { w_item.setValue(true); } else { w_item.setValue(false); } } }
private void evalNumberToString(cReportFormulaInt fint) { if (fint.getVariables().item(C_NUMBERTOSTRING) == null) { fint.getVariables().add(null, C_NUMBERTOSTRING); } cReportVariable w_item = fint.getVariables().item(C_NUMBERTOSTRING); // the NumberToString funciton is for numbres // double iNumber = 0; int iLenguage = 0; iNumber = pGetNumber(m_report.getValue(fint.getParameters().item(0).getValue(), true)); iLenguage = cUtil.valAsInt(fint.getParameters().item(1).getValue()); cNumberToString ntos = new cNumberToString(); switch (iLenguage) { case C_SPANISH: w_item.setValue(ntos.spanishNumberToString(iNumber)); break; case C_ENGLISH: w_item.setValue(ntos.englishNumberToString(iNumber)); break; case C_FRENCH: w_item.setValue(ntos.frenchNumberToString(iNumber)); break; } }
private void evalMin(cReportFormulaInt fint) { object value = null; if (fint.getVariables().item(C_MIN) == null) { fint.getVariables().add(null, C_MIN); } cReportVariable w_item = fint.getVariables().item(C_MIN); // The Min function is for numbers and strings // value = m_report.getValue(fint.getParameters().item(0).getValue()); if (value.GetType() == typeof(String)) { if (String.Compare(w_item.getValue().ToString(), value.ToString(), StringComparison.CurrentCulture) > 0) { w_item.setValue(value); } } else { if ((double)w_item.getValue() > (double)value) { w_item.setValue(value); } } }
private object resultGroupCount(cReportFormulaInt fint) { if (fint.getVariables().count() > 0) { return fint.getVariables().item(C_GROUPCOUNT).getValue(); } else { return 0; } }
private object resultGroupAverage(cReportFormulaInt fint) { if (fint.getVariables().count() > 0) { return fint.getVariables().item(C_GROUPAVERAGE).getValue(); } else { return 0; } }
private object resultValue(cReportFormulaInt fint) { return m_report.getValue(fint.getParameters().item(0).getValue(), true); }
private String resultTextReplace(cReportFormulaInt fint) { int i = 0; cReportControl ctrl = null; String text = ""; List<String> collCtrlsToReplace = null; ctrl = pGetControl(m_ctrlName); if (ctrl == null) { return ""; } text = ctrl.getLabel().getText(); try { collCtrlsToReplace = m_collTextReplace[m_ctrlName]; } catch { int lenText = 0; int pos = 0; int endpos = 0; collCtrlsToReplace = new List<String>(); lenText = text.Length; while (i < lenText) { pos = text.IndexOf(C_MACRO_CTRL, i + 1); if (pos > 0) { endpos = text.IndexOf(C_MACRO_CTRL, pos + 1); if (endpos > 0) { collCtrlsToReplace.Add(text.Substring(pos + 2, endpos - pos - 2)); } i = endpos + 1; } else { i = lenText + 1; } } m_collTextReplace.Add(m_ctrlName, collCtrlsToReplace); } cReportControl ctrlValue = null; for (i = 0; i < collCtrlsToReplace.Count; i++) { ctrlValue = pGetControl(collCtrlsToReplace[i]); if (ctrlValue != null) { text = text.Replace(C_MACRO_CTRL + collCtrlsToReplace[i] + C_MACRO_CTRL, m_report.getValue(ctrlValue.getName(), false).ToString()); } } return text; }
private int resultLength(cReportFormulaInt fint) { return m_report.getValueString(fint.getParameters().item(0).getValue()).Length; }
private double resultCalculo(cReportFormulaInt fint) { String control = ""; double value1 = 0; double value2 = 0; int oper = 0; control = fint.getParameters().item(1).getValue(); value1 = Convert.ToDouble(m_report.getValue(fint.getParameters().item(0).getValue(), true)); if (control != "\"\"") { value2 = Convert.ToDouble(m_report.getValue(control, true)); } else { value2 = double.Parse(fint.getParameters().item(2).getValue()); } oper = int.Parse(fint.getParameters().item(3).getValue()); switch (oper) { // addition case 1: return value1 + value2; // substraction case 2: return value1 - value2; // multiplication case 3: return value1 * value2; // division case 4: return cUtil.divideByZero(value1, value2); // power case 5: return Math.Pow(value1, ((int)value2)); default: return 0; } }
private double resultAverage(cReportFormulaInt fint) { if (fint.getVariables().count() == 0) { return 0; } double sum = (double)fint.getVariables().item(C_AVERAGESUM).getValue(); double count = (double)fint.getVariables().item(C_AVERAGECOUNT).getValue(); return sum / count; }
private void evalSumTime(cReportFormulaInt fint) { if (fint.getVariables().item(C_SUMTIME) == null) { fint.getVariables().add(null, C_SUMTIME).setValue(new cStructTime()); } cReportVariable w_item = fint.getVariables().item(C_SUMTIME); // the SumTime if for dates // pSumTimes((cStructTime)w_item.getValue(), DateTime.Parse(m_report.getValue(fint.getParameters().item(0).getValue(), true).ToString())); }
private object resultGroupLineNumber(cReportFormulaInt fint) { if (fint.getVariables().count() > 0) { return fint.getVariables().item(C_GROUPLINENUMBER).getValue(); } else { return 0; } }
private void evalCount(cReportFormulaInt fint) { if (fint.getVariables().item(C_COUNT) == null) { fint.getVariables().add(null, C_COUNT); } cReportVariable w_item = fint.getVariables().item(C_COUNT); // the Count functio is for numbers // w_item.setValue((double)w_item.getValue() + 1); }
private object resultIsInRs(cReportFormulaInt fint) { if (fint.getVariables().count() > 0) { return fint.getVariables().item(C_ISINRS).getValue(); } else { return 0; } }
private void evalIsNotEqual(cReportFormulaInt fint) { if (fint.getVariables().item(C_ISNOTEQUAL) == null) { fint.getVariables().add(null, C_ISNOTEQUAL); } cReportVariable w_item = fint.getVariables().item(C_ISNOTEQUAL); // the IsNotEqual function is for numbers // String strValue = ""; String strConstValue = ""; strValue = (String)m_report.getValue(fint.getParameters().item(0).getValue(), true); strConstValue = fint.getParameters().item(1).getValue(); w_item.setValue(strValue != strConstValue); }
private void evalAverage(cReportFormulaInt fint) { if (fint.getVariables().item(C_AVERAGESUM) == null) { fint.getVariables().add(null, C_AVERAGESUM); fint.getVariables().add(null, C_AVERAGECOUNT); } cReportVariable w_item = fint.getVariables().item(C_AVERAGESUM); // the average function is for numbers // w_item.setValue((double)w_item.getValue() + pGetNumber(m_report.getValue(fint.getParameters().item(0).getValue(), true))); w_item = fint.getVariables().item(C_AVERAGECOUNT); // the average function is for numbers // w_item.setValue((double)w_item.getValue() + 1); }
private void evalGroupCount(cReportFormulaInt fint) { if (fint.getVariables().item(C_GROUPCOUNT) == null) { fint.getVariables().add(null, C_GROUPCOUNT); } cReportVariable w_item = fint.getVariables().item(C_GROUPCOUNT); // the Count function is for numbers // if param1 doesn't contain an index column is because we haven't // process the formulas yet. It happens because compilereport // is called before the InitColIndex in cReport's Launch function // and the order can not be changed because the function GetData // is executed after the CompileReport function, and we don't want // to change this order because we are afraid of the collateral damage // it could produce :( // // In the future we can analize it and modify the order and if this // doesn't produce any error we will remove this if :) // if (fint.getParameters().item(cReportGlobals.C_KEYINDEXCOL) == null) { w_item.setValue(0); } else { w_item.setValue( m_report.getGroupCount( int.Parse(fint.getParameters().item(cReportGlobals.C_KEYINDEXCOL).getValue()), int.Parse(fint.getParameters().item(cReportGlobals.C_KEYINDEXGROUP).getValue()))); } }
private void evalSum(cReportFormulaInt fint) { if (fint.getVariables().item(C_SUM) == null) { fint.getVariables().add(null, C_SUM).setValue(0); } cReportVariable w_item = fint.getVariables().item(C_SUM); // the sum function is for numbers // w_item.setValue(Convert.ToDouble(w_item.getValue()) + pGetNumber(m_report.getValue(fint.getParameters().item(0).getValue(), true))); }
private void evalIsInRs(cReportFormulaInt fint) { if (fint.getVariables().item(C_ISINRS) == null) { fint.getVariables().add(null, C_ISINRS); } cReportVariable w_item = fint.getVariables().item(C_ISINRS); // TODO: finish coding evalIsInRs // w_item.setValue(true); }
private void evalDeclareVar(cReportFormulaInt fint) { String varName = ""; varName = fint.getParameters().item(0).getValue(); if (m_variables.item(varName) == null) { m_variables.add(null, varName); } }
private void pEvalFunctionGroup(cReportFormulaInt fint) { double value = 0; double total = 0; if (fint.getVariables().count() > 0) { if (fint.getParameters().item(cReportGlobals.C_KEYINDEXCOL2) == null) { value = 0; } else { int columnIndex = int.Parse(fint.getParameters().item(cReportGlobals.C_KEYINDEXCOL2).getValue()); value = cUtil.val(m_report.getValueFromRs(columnIndex).ToString()); } cReportVariable var = fint.getVariables().item(C_GROUPPERCENTT); total = cUtil.val(var.getValue().ToString()); value = cUtil.divideByZero(value, total); var.setValue(value); } }
private void evalSetVar(cReportFormulaInt fint) { String varName = ""; varName = fint.getParameters().item(0).getValue(); if (m_variables.item(varName) == null) { throw new ReportArgumentMissingException( C_MODULE, cReportError.errGetDescript( csRptErrors.CSRPTERRMISSINGPARAM, varName, "_setVar")); } cReportVariable w_item = m_variables.item(varName); w_item.setValue(fint.getParameters().item(1).getValue()); }
private void pEvalFunctionInt(cReportFormulaInt fint) { switch (fint.getFormulaType()) { case csRptFormulaType.CSRPTFAVERAGE: evalAverage(fint); break; case csRptFormulaType.CSRPTFSUM: evalSum(fint); break; case csRptFormulaType.CSRPTFSUMTIME: evalSumTime(fint); break; case csRptFormulaType.CSRPTMAX: evalMax(fint); break; case csRptFormulaType.CSRPTMIN: evalMin(fint); break; case csRptFormulaType.CSRPTCOUNT: evalCount(fint); break; case csRptFormulaType.CSRPTFNUMBERTOSTRING: evalNumberToString(fint); break; case csRptFormulaType.CSRPTISEQUAL: evalIsEqual(fint); break; case csRptFormulaType.CSRPTISNOTEQUAL: evalIsNotEqual(fint); break; case csRptFormulaType.CSRPTISGREATERTHAN: evalIsGreaterThan(fint); break; case csRptFormulaType.CSRPTISLESSTHAN: evalIsLessThan(fint); break; case csRptFormulaType.CSRPTFCALCULO: // nothing to do break; case csRptFormulaType.CSRPTDECLAREVAR: evalDeclareVar(fint); break; case csRptFormulaType.CSRPTGETVAR: // nothing to do break; case csRptFormulaType.CSRPTGETPARAM: // nothing to do break; case csRptFormulaType.CSRPTSETVAR: evalSetVar(fint); break; case csRptFormulaType.CSRPTADDTOVAR: evalAddToVar(fint); break; case csRptFormulaType.CSRPTGETDATAFROMRSAD: evalGetDataFromRsAd(fint); break; case csRptFormulaType.CSRPTGETDATAFROMRS: evalGetDataFromRs(fint); break; case csRptFormulaType.CSRPTISINRS: evalIsInRs(fint); break; } }
private void evalGetDataFromRs(cReportFormulaInt fint) { }
private void pSetColIndexInGroupFormulaAux( DataTable rs, cReportFormulaInt fint, String colName, String keyParam) { for (int i = 0; i < rs.Columns.Count; i++) { if (colName.ToLower() == rs.Columns[i].ColumnName.ToLower()) { if (fint.getParameters().item(keyParam) == null) { fint.getParameters().add2("", keyParam); } fint.getParameters().item(keyParam).setValue(i.ToString()); break; } } }
private void evalAddToVar(cReportFormulaInt fint) { String varName = ""; varName = fint.getParameters().item(0).getValue(); if (m_variables.item(varName) == null) { throw new ReportArgumentMissingException( C_MODULE, cReportError.errGetDescript( csRptErrors.CSRPTERRMISSINGPARAM, varName, "_evalAddToVar")); } cReportVariable w_item = m_variables.item(varName); // the EvalAddToVar function is for numbers // w_item.setValue((double)w_item.getValue() + pGetNumber(fint.getParameters().item(1).getValue())); }