Ejemplo n.º 1
0
/** Sets the data for the all calculated fields - list size must number of calculated fields */
void MReportSection::setCalcFieldData( QPtrList < QMemArray < double > > *values, QValueVector < QString > *valueS, QDomNode *record ) {
  MCalcObject * field;
  int i = 0;
  int calcType;
  QString value = "";

  // Calculate and set the calculated field's data

  for ( field = calculatedFields.first(); field != 0;
        field = calculatedFields.next() ) {

    if ( field->getFromGrandTotal() )
      continue;

    calcType = field->getCalculationType();

    if ( calcType == MCalcObject::NoOperation ) {
      if ( valueS )
        value = ( *valueS )[ i ];

      calculateField( field, 0, value, record );
    } else if ( calcType == MCalcObject::CallFunction ) {
      calculateField( field, 0, value, record );
    } else {
      if ( values )
        calculateField( field, values->at( i ), value, record );
    }

    i++;
  }
}
Ejemplo n.º 2
0
void Q3SqlCursor::sync()
{
    if (isActive() && isValid() && d->lastAt != at()) {
        d->lastAt = at();
        int i = 0;
        int j = 0;
        bool haveCalculatedFields = false;
        for (; i < count(); ++i) {
            if (!haveCalculatedFields && d->infoBuffer[i].isCalculated()) {
                haveCalculatedFields = true;
            }
            if (QSqlRecord::isGenerated(i)) {
                QVariant v = QSqlQuery::value(j);
                if ((v.type() == QVariant::String) &&
                        d->infoBuffer[i].isTrim()) {
                    v = qTrim(v.toString());
                }
                QSqlRecord::setValue(i, v);
                if (QSqlQuery::isNull(j))
                    QSqlRecord::field(i).clear();
                j++;
            }
        }
        if (haveCalculatedFields) {
            for (i = 0; i < count(); ++i) {
                if (d->infoBuffer[i].isCalculated())
                    QSqlRecord::setValue(i, calculateField(fieldName(i)));
            }
        }
    }
}
Ejemplo n.º 3
0
/** Sets the data for the calculated fields whose calculation source is the grand total */
void MReportSection::setCalcFieldDataGT( QPtrList < QMemArray < double > > *values, MReportSection *rFooter, QValueVector < QString > *valueS, QDomNode *record ) {
  MCalcObject * field;
  int grandTotalIndex = 0;
  // Calculate and set the calculated field's data

  for ( field = calculatedFields.first(); field != 0;
        field = calculatedFields.next() ) {

    if ( !field->getFromGrandTotal() && level > -1 )
      continue;

    grandTotalIndex = rFooter->getCalcFieldIndex( field->getFieldName() );

    if ( grandTotalIndex != -1 ) {
      calculateField( field, values->at( grandTotalIndex ), "", record );
    }
  }
}