С помощью этих функций вы можете получить данные из любой формы базы данных. Это может быть значение какого-нибудь поля или итог по полю - сумма, среднее и т. д. Данные функции являются основными при проведении различных расчетов.
Вычисление итогов: DBSUM, DBAVG, DBMAX, DBMIN, DBCOUNT.
Данные функции позволяют рассчитать итог по определенному полю формы. Синтаксис следующий:
`DB...('имя формы', 'имя поля', 'фильтр')
DBCOUNT('имя формы', 'фильтр')`
Имя формы - имя формы-источника базы данных, по которой будет рассчитан итог. Это может быть главная форма или подчиненная. Важно, чтобы имена форм в базе данных были уникальные, иначе функция может выбрать не ту форму. Если указана подчиненная форма, то связь с главной формой будет установлена автоматически, т. е. в фильтре вы можете указывать поля главной формы-источника.
Имя поля - имя поля, по которому будет рассчитан итог. В случае функций DBSUM и DBAVG, поле должно быть числовым, в случае DBMAX, DBMIN - тип поля может быть любым (кроме файла и изображения), но в основном это число или дата.
Фильтр - фильтр задает условия отбора записей. Этот фильтр составляется также как фильтр источника в отчетах/запросах. Прямо в строке вы можете обращаться к полям формы и использовать функции. При проверке выражения в редакторе содержимое строки не анализируется, поэтому будьте внимательны при составлении фильтра - очень легко ошибиться. Только в процессе вычисления, программа может выдать ошибку.
В случае если записи не удовлетворяют условиям фильтра, то функция вернет NULL. Это надо учитывать, если функция участвует в арифметической операции (сложение, умножение и т. д.). Обычно, в этом случае, стоит обернуть функцию в функцию NZ, например:
`nz(dbsum('оплаты', 'Сумма', '[!клиент]=recid("клиенты")'), 0)`
В этом примере вычисляется сумма всех платежей текущего клиента. Если этот клиент ничего не платил, то функция вернет NULL. Благодоря функции NZ значение NULL будет заменено на 0.
Функция DBCOUNT возвращает количество записей, которые удовлетворяют условиям фильтра, или NULL, если нет записей, удовлетворяющих фильтру.
Функция DBGET
Данная функция возвращает значение поля записи, удовлетворяющей условиям фильтра. Синтаксис функции:
`DBGET('имя формы', 'имя поля', 'фильтр')`
Значение параметров полностью аналогичны вышеописанным функциям. Поле может быть любого типа, кроме файла или изображения. На самом деле, записей, которые попадают в фильтр, может быть несколько, но выбирается всегда первая.
Функции DBGETID
Эта функция возвращает идентификатор первой записи, попавшей в фильтр. Синтаксис функции:
`DBGETID('имя формы', 'фильтр')`
Затем данный идентификатор можно использовать при фильтрации объектов или использовать в функции DBGETBYID для быстрого доступа к полю формы.
Функция DBGETBYID
Эта функция позволяет быстро получить значение поля по идентификатору записи. Синтаксис функции:
`DBGETBYID('имя формы', 'имя поля', идентификатор записи)`
Значение параметров Имя формы и Имя поля полностью аналогичны вышеописанным функциям.
Идентификатор записи можно получить с помощью функций DBGETID и OBJID (можно еще и RECID).
Функция OBJID
Эта функция возвращает идентификатор записи. Синтаксис функции:
`OBJID('имя формы', 'имя поля', 'значение поля')`
Поле должно быть текстовым. Обычно эта функция используется в условии фильтра списка, когда нужно отфильтровать список по определенным объектам. OBJID урезанный вариант функции DBGETID.