internal bool load(CSXml.cXml xDoc, XmlNode nodeObj) { nodeObj = xDoc.getNodeFromNode(nodeObj, m_name); if (nodeObj != null) { m_name = xDoc.getNodeProperty(nodeObj, "Name").getValueString(eTypes.eText); m_text = xDoc.getNodeProperty(nodeObj, "Text").getValueString(eTypes.eText); m_idxGroup = xDoc.getNodeProperty(nodeObj, "idxGroup").getValueInt(eTypes.eLong); m_whenEval = (csRptWhenEval)xDoc.getNodeProperty(nodeObj, "WhenEval").getValueInt(eTypes.eInteger); } return(true); }
private bool evalFunctions(int idxGroup, csRptWhenEval whenEval) { cReportFormula formula = null; bool bHaveToEvalRow = false; int idxRowEvalued = 0; int recordCount = 0; if (m_rows != null) { recordCount = m_vRowsIndex.Length; } // if the row to be evaluated is valid // if (m_iRowFormula < recordCount) { switch (idxGroup) { case C_IDX_GROUP_HEADER: case C_IDX_GROUP_REPORTHEADER: idxRowEvalued = C_IDX_H_LAST_ROW_EVALUED; break; case C_IDX_GROUP_DETAIL: idxRowEvalued = C_IDX_D_LAST_ROW_EVALUED; break; case C_IDX_GROUP_FOOTER: case C_IDX_GROUP_REPORTFOOTER: idxRowEvalued = C_IDX_F_LAST_ROW_EVALUED; break; // groups headers o footers default: idxRowEvalued = C_IDX_G_LAST_ROW_EVALUED; break; } // evaluate functions before printing // if (whenEval == csRptWhenEval.CSRPTEVALPRE) { if (idxRowEvalued == C_IDX_G_LAST_ROW_EVALUED) { // if it is a footer // if (idxGroup < 0) { bHaveToEvalRow = m_vGroups[idxGroup * -1].lastFPreRowEvalued < m_iRowFormula; } else { bHaveToEvalRow = m_vGroups[idxGroup].lastHPreRowEvalued < m_iRowFormula; } } else { bHaveToEvalRow = m_lastRowPreEvalued[idxRowEvalued] < m_iRowFormula; } } // evaluate function after printing // else { if (idxRowEvalued == C_IDX_G_LAST_ROW_EVALUED) { // if it is a footer // if (idxGroup < 0) { bHaveToEvalRow = m_vGroups[idxGroup * -1].lastFPostRowEvalued < m_iRowFormula; } else { bHaveToEvalRow = m_vGroups[idxGroup].lastHPostRowEvalued < m_iRowFormula; } } else { bHaveToEvalRow = m_lastRowPostEvalued[idxRowEvalued] < m_iRowFormula; } } // if we need to evaluate // if (bHaveToEvalRow) { for (int _i = 0; _i < m_formulas.count(); _i++) { formula = m_formulas.item(_i); if (formula.getWhenEval() == whenEval && (idxGroup == formula.getIdxGroup() || formula.getIdxGroup2() == idxGroup)) { formula.setHaveToEval(true); } } for (int _i = 0; _i < m_formulas.count(); _i++) { formula = m_formulas.item(_i); if (formula.getWhenEval() == whenEval && (idxGroup == formula.getIdxGroup() || formula.getIdxGroup2() == idxGroup)) { if (formula.getIdxGroup2() == idxGroup) { m_compiler.evalFunctionGroup(formula); } else { m_compiler.evalFunction(formula); } } } // update the last evaluated row // // evaluate before printing // if (whenEval == csRptWhenEval.CSRPTEVALPRE) { if (idxRowEvalued == C_IDX_G_LAST_ROW_EVALUED) { // if it is a footer // if (idxGroup < 0) { m_vGroups[idxGroup * -1].lastFPreRowEvalued = m_iRowFormula; } else { m_vGroups[idxGroup].lastHPreRowEvalued = m_iRowFormula; } } else { m_lastRowPreEvalued[idxRowEvalued] = m_iRowFormula; } } // evaluate after printing // else { if (idxRowEvalued == C_IDX_G_LAST_ROW_EVALUED) { // if it is a footer // if (idxGroup < 0) { m_vGroups[idxGroup * -1].lastFPostRowEvalued = m_iRowFormula; } else { m_vGroups[idxGroup].lastHPostRowEvalued = m_iRowFormula; } } else { m_lastRowPostEvalued[idxRowEvalued] = m_iRowFormula; } } } } return true; }
public void setWhenEval(csRptWhenEval rhs) { m_whenEval = rhs; }
internal bool load(CSXml.cXml xDoc, XmlNode nodeObj) { nodeObj = xDoc.getNodeFromNode(nodeObj, m_name); if (nodeObj != null) { m_name = xDoc.getNodeProperty(nodeObj, "Name").getValueString(eTypes.eText); m_text = xDoc.getNodeProperty(nodeObj, "Text").getValueString(eTypes.eText); m_idxGroup = xDoc.getNodeProperty(nodeObj, "idxGroup").getValueInt(eTypes.eLong); m_whenEval = (csRptWhenEval)xDoc.getNodeProperty(nodeObj, "WhenEval").getValueInt(eTypes.eInteger); } return true; }