Вычисляет итоговые суммы по числовым полям в текущей таблице.

TOTAL TO TableName ON FieldName   [FIELDS FieldNameList]   [Scope]
   [FOR lExpression1]   [WHILE lExpression2]   [NOOPTIMIZE]

Параметры

TableName

Задает имя таблицы, в которую будут записываться итоговые суммы. Если заданной таблицы не существует, Visual FoxPro создает ее. Если таблица существует и установка SET SAFETY имеет значение ON, Visual FoxPro спрашивает, собираетесь ли вы перезаписать существующую таблицу. Если действует SET SAFETY OFF, таких вопросов не поступает, а выходная таблица перезаписывается.

FieldName

Задает поле, по которому группируются итоговые суммы. Таблица должна быть отсортирована по этому полю, или оно должно служить выражением ключа для открытого индекса или тега индекса.

FIELDS FieldNameList

Задает поля, которые подлежат суммированию. Имена полей в списке следует разделять запятыми. Если опустить предложение FIELDS, по умолчанию суммируются все числовые поля.

Scope

Задает диапазон суммируемых записей. По умолчанию областью действия команды TOTAL являются все записи (предложение ALL). Диапазон задается следующими предложениями: ALL, NEXT nRecords, RECORD nRecordNumber, и REST.

Подробнее о предложениях диапазона смотрите тему Выражение Scope.

FOR lExpression1

Задает критерий, в соответствии с которым в суммировании участвуют только записи, удовлетворяющие логическому условию lExpression1.

Запрос, созданный командой TOTAL ... FOR, может быть оптимизирован по технологии Rushmore, если lExpression1 является оптимизируемым выражением. Для получения наивысшей производительности используйте в предложении FOR оптимизируемое выражение.

Для получения дополнительной информации, смотрите Команда SET OPTIMIZE и Использование оптимизации запросов Rushmore для ускорения доступа к данным.

WHILE lExpression2

Задает условие, согласно которому записи текущей таблицы участвуют в суммировании до тех пор, пока логическое выражение lExpression2 остается истинным (.T.).

NOOPTIMIZE

Блокирует оптимизацию команды TOTAL по технологии Rushmore.

Для получения дополнительной информации, смотрите Команда SET OPTIMIZE и Использование оптимизации запросов Rushmore для ускорения доступа к данным.

Expand imageЗамечания

Таблица в выбранной в данный момент рабочей области должна быть отсортирована или проиндексирована. Для каждой группы записей, имеющих общее значение поля или уникальное значение ключа индекса, вычисляется отдельная итоговая сумма. Результаты помещаются в записи второй таблицы. В этой таблице для каждого общего значения поля или уникального значения ключа индекса создается одна запись.

Если числовые поля второй таблицы не в состоянии вместить по ширине полученные суммы, может произойти числовое переполнение. В этом случае Visual FoxPro сохраняет наиболее старшие части итоговых сумм. Если поле слишком мало, чтобы хранить итоговую сумму, происходит следующее:

  • Десятичные знаки дробной части отбрасываются, а оставшаяся часть суммы округляется.

  • Если сумма по-прежнему не вмещается в поле, используется экспоненциальное представление, при условии, что поле итоговой суммы содержит не менее семи цифр.

  • В противном случае ѕ содержимое поля замещается звездочками.

Expand imageСмотрите также