Exemple #1
0
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();
      }
    }
  }
}