Beispiel #1
0
        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;
        }
Beispiel #3
0
 public void setWhenEval(csRptWhenEval rhs)
 {
     m_whenEval = rhs;
 }
 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;
        }