void MReportEngine::setFieldValues(QDomNamedNodeMap *fields, int level, MReportSection *detail, QDomNode *ptrRecord, bool noTotal) { QString detailValue; int calcIdx; int vsize; for (int i = 0; i < detail->getFieldCount(); i++) { detailValue = fields->namedItem(detail->getFieldName(i)).nodeValue(); detail->setFieldData(i, detailValue, ptrRecord, fillRecords_); if (noTotal) continue; calcIdx = rFooter->getCalcFieldIndex(detail->getFieldName(i)); if (calcIdx != -1) { vsize = grandTotal->at(calcIdx)->size(); grandTotal->at(calcIdx)->resize(vsize + 1); grandTotal->at(calcIdx)->at(vsize) = detailValue.toDouble(); } for (int l = level; l >= 0; l--) { MReportSection *footer = findDetailFooter(l); if (!footer) continue; calcIdx = footer->getCalcFieldIndex(detail->getFieldName(i)); if (calcIdx == -1) continue; vsize = gDTFooters[l]->at(calcIdx)->size(); gDTFooters[l]->at(calcIdx)->resize(vsize + 1); gDTFooters[l]->at(calcIdx)->at(vsize) = detailValue.toDouble(); } } }
void MReportEngine::reserveSizeForCalcFields( QDomNamedNodeMap *fields, int level ) { for ( int l = level; l >= 0; l-- ) { MReportSection *footer = findDetailFooter( l ); if ( footer ) { gDTSFooters[ l ]->reserve( footer->getCalcFieldCount() ); for ( int i = 0; i < footer->getCalcFieldCount(); i++ ) gDTFooters[ l ]->append( new QMemArray < double > ); } if ( footer ) { int calcIdx; for ( int i = 0; i < fields->count(); i++ ) { calcIdx = footer->getCalcFieldIndex( fields->item( i ).nodeName() ); if ( calcIdx != -1 ) ( *gDTSFooters[ l ] )[ calcIdx ] = fields->item( i ).nodeValue(); } } } }