FileMaker. Часть 5
Создание программы ведения домашней бухгалтерии
[ 24 июня, 2008 г ]Автор: А. Перла

Связи

Relation означает, что одна таблица связана с другой по какому-либо полю. Значения двух полей (в обеих таблицах) будут указывать, какие из записей одной таблицы отображаются на Layout, привязанном ко второй таблице. Возможно, это звучит несколько заумно, поэтому перейдем к реализации, чтобы на примере лучше уяснить суть.

Итак, нам нужно привязать таблицу категорий доходов Category Income (для Category Expenses весь процесс будет полностью аналогичным) к Layout Transaction таким образом, чтобы все записи таблицы (названия категорий), отображались списком в редакторе транзакций. Выберем меню File - Manage - Database. Relations определяется в этом диалоге, но нам нужно еще решить, по каким полям связывать таблицы. Сначала перейдем в таблицу Transaction и создадим там новое поле - numb. В качестве формата поля выберем формат Calculation и в появившемся диалоговом окне укажем способ автоматического вычисления поля:

Get ( RecordNumber )

Таким образом, для каждой записи значением поля numb будет является номер это записи. Теперь перейдем во вкладку Relationships. В этой вкладке каждая таблица отображается отдельным прямоугольнsv окошком с перечислением полей. Нажав вторую кнопку внизу слева (плюсик над линией связи), создадим связь между полем numb таблицы Transaction и полем global таблицы Category Income как показано на рисунке. Повторим операцию для таблицы Category Expenses.

Ну вот и поле global пригодилось. То что это поле является "глобальным", то есть, переменной, привязанной к таблице, для нашего случая очень важно - таким образом с каждой записью таблицы Transaction оказывается связаны ВСЕ записи таблицы категорий. Поле numb не может быть пустым, иначе связь работать не будет, поэтому мы сделали его автоматически вычисляемым. Само значение поля numb нас в данному случае не интересует, я использовал вычисление по номеру записи, что дает каждой записи уникальность, но можно было указать любое выражение или просто число.

Нужно понимать, что рассмотренный сейчас частный случай является, пожалуй, самым простым случаем применения связей между таблицами в FileMaker. Грамотно оперируя значениями связанных полей, можно настроить систему так, чтобы каждой записи одной таблицы соответствовали только определенные (либо только одна) записи другой таблицы. Приведем пример. Допустим, требуется, чтобы в списке категорий расходов в нужный момент отображались только категории одной группы из нескольких: авто, медицина, питание и т.п. В таблице категорий тогда создается еще одно поле, в которое будет заноситься название группы, к которой относится данная категория, а в таблице транзакций нужно создать поле для указания группы. Теперь, если в диалоге Relationships мы создадим связь между этими полями, то при вводе в поле "группа категорий" таблицы транзакций в списке категорий будут отображаться только те категории, которые относятся к этой группе. Мы не будем реализовать подобный механизм в нашей программе (здесь он нецелесообразен), но описали его с целью иллюстрирования применения связей в FileMaker. Теперь перейдем к созданию списка категорий.


Источники:

Комментарии, обсуждение