Приветствую Вас, Гость
Главная » Статьи » Разработка баз данных FileMaker

Порталы в системе FileMaker. Возможности использования.

                    Порталы в системе FileMaker. Возможности использования.

 

Для рассмотрения вопросов данной статьи, а также в целях дальнейшего изучения материала создадим небольшую базу данных Test.fp7.  Её структура представлена на рисунке и включает таблицы: Организация, Проект, Персонал, Сектор, Аккаунт_Проект.

 

1. Анализ поставленной задачи

 

Для уточнения задачи сделаем несколько постановочных условий (исходные данные):

- каждая организация принадлежит только к одному сектору; (1)

- персонал принадлежит только к одной организации; (2)

- организация может участвовать в нескольких проектах; (3)

- в проекте может участвовать несколько организаций. (4)

 

 

Анализируя исходные данные, обратим внимание, что условия (1) и (2) подразумевают связь один-к-многим, а условия (3) и (4) – связь многие-к-многим.

Для реализации условий (3) и (4) как раз и создана таблица связи Аккаунт_Проект. С одной стороны она имеет привязку к организациям через tp_ID_Организация, а с другой стороны – привязку к проектам через tp_ID_Проект.

 

Следующим этапом для удобства отображения информации добавим вычисляемые поля в структуру таблиц.

- В таблицу Организация: поле Сектор_Text = Сектор::Наименование;

- В таблицу Персонал: поле Организация_Text = Организация::Наименование;

- В таблицу Аккаунт_Проект: поля Организация_Text = Организация::Наименование и Проект_Text = Проект::Наименование.

 

2. Разработка стандартных форм отображения информации

 

Работу с формами представления данных рассмотрим на примере таблицы Организация. Для удобства отображения информации по организациям разработаем два макета: для отображения в  виде списка и для отображения в виде формы. Назовем такие макеты: Организация (он создан автоматически при создании таблицы) и Организация_Form.

 

А) Макет в виде списка

Для организации поиска в таблице Организация дополнительно вводим глобальные поля:

- Наименование_Поиск – поиск по названию

- Адрес_Поиск – поиск по адресу

- Сектор_Поиск – поиск по сектору

Количество полей определяется необходимым объемом поиска.

Поля для организации поиска, как правило, располагаем в верхнем колонтитуле макета Организация.

Также расположим две кнопки New (добавление организации)  и Поиск (поиск по организациям).

Остальные поля располагаются в линию.

При необходимости создается нижний колонтитул:

-          Пункт меню Layouts – Part Setup…

-          Нажимаем кнопку Create и указываем признак Footer.

 

Форма макета представлена на рисунке:

 

 

Отображение данных выглядит примерно так:

 

 

Б) Макет в виде формы

 

Следующим этапом создаем форму для отображения данных по организации. Располагаем основные сведения, а под ними – два портала. Левый отображает данные по сотрудникам компании, правый – данные об участии в проектах. Также расположим две кнопки для добавления сотрудников и для добавления проектов в соответствующие списки. Завершающим элементом ставим кнопку (или надпись) «Возврат к списку организаций».

 

Примерная форма такого рода макета представлена ниже.

 

 

Рассмотрим по ходу изложения порядок создания Листа Значений (Value List) для поля tp_ID_Проект.

- Открываем Инспектор Объектов, на вкладке Data выбираем стиль объекта (Control Style) на Drop-down List.

- Входим в редактор Листов Значений, нажав на кнопку в разделе "Values from

- Нажимаем кнопку New

- Вводим имя Листа Значений (например, Проекты); указываем, что значения будем брать из таблицы базы данных (признак «Use values from field»)

- Нажимаем кнопку «Specify field…»

- Выбираем таблицу для формирования значений. В данном случае это поле Проект::tp_ID и поле Проект::Наименование. При этом указываем, что отображать будем только второе поле (Show values only from second field).

- Подтверждаем все окна выбора.

Наглядно алгоритм представлен на рисунке:

 

 

Аналогично создаем Value List для tp_ID_Сектор из таблицы Сектор.

 

Таким образом мы создали все основные элементы для отображения основных данных в таблицах и кнопки для добавления информации.

 

В) Основные алгоритмы добавления данных.

 

Реализуем два алгоритма добавления данных:

- Скрипт «Добавить_Сотрудника»

 

Set Variable [$idValue:Организация::tp_ID]  // определяем ID организации

Go to Layout ["Персонал” (Персонал)]   // переходим на макет ввода сотрудников

New Record/Request // добавляем новую запись

Set Field[Персонал::tp_ID_Организация; $id] // присваиваем ID организации

Commit Records/Requests [Skip data entry validation]  //подтверждаем

Go to Layout [original layout]  // возвращаемся на исходный макет

Commit Records/Requests [Skip data entry validation] // ещё раз подтверждаем

 

Выделяем надпись «Добавить сотрудника», нажимаем правую кнопку мыши, выбираем меню «Button Setup». Выбираем пункт «Perform Script» и указываем имя скрипта («Добавить_Сотрудника»)

 

- Скрипт «Добавить_Проект»

 

Set Variable [$id; Value:Организация::tp_ID]

Go to Layout ["Аккаунт_Проект” (Аккаунт_Проект)]

New Record/Request

Set Field[Аккаунт_Проект::tp_ID_Организация; $id]

Commit Records/Requests [Skip data entry validation]

Go to Layout [original layout]

Commit Records/Requests [Skip data entry validation]

 

Аналогично привязываем данный скрипт к надписи «Добавить проект».

 

И в завершении текущей статьи разработаем скрипт для поиска по организациям.

 

- Скрипт Поиск

 

If [Организация::Адрес_Поиск > "" or Организация::Наименование_Поиск > "" or Организация::Сектор_Поиск > ""] // Если одно из полей поиска непустое

Enter Find Mode [ ]  // переход в режим поиска

// вставляем поля поиска, если они непустые

  If[Организация::Наименование_Поиск > ""]

    Insert Calculated Result (или Set Field)[Организация::Наименование; Организация::Наименование_Поиск] [Select]

  End If

  If [Организация::Адрес_Поиск > ""]

    Insert Calculated Result(или Set Field)[Организация::Адрес; Организация::Адрес_Поиск] [Select]

  End If

  If [Организация::Сектор_Поиск > ""]

    Go to Layout ["Организация_Форма” (Организация)] // переходим на макет «Организация_Форма», т.к. на нем находится поле Организация::Сектор_Text

    Insert Calculated Result(или Set Field)[Организация::Сектор_Text; Организация::Сектор_Поиск] [Select]

  End If Perform Find [ ]

Go to Layout [original layout] //возврат на текущий макет

Go to Record/Request/Page [First]  // переход на первую запись

End If

 

Также можно произвести поиск по проекту. Т.е. создать поле Проект_Поиск, включить в скрипт шаги:

 

  If [Организация::Проект_Поиск > ""]

    Go to Layout ["Организация_Форма” (Организация)] // переходим на макет «Организация_Форма», т.к. на нем находится поле Организация::Проект_Text

    1 вариант) Insert Calculated Result[Организация::Проект_Text; Организация::Проект_Поиск] [Select]

    2 вариант) Set Field[Организация::Проект_Text; Организация::Проект_Поиск] [Select]

  End If Perform Find [ ]

 

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

При использовании оператора "Insert Calculated Result" поиск производится исключительно по полям, находящимся на макете.

Вместо оператора "Insert Calculated Result" часто используют оператор "Set Field" (2-й вариант). При этом нахождение самого поля на макете необязательно.

Категория: Разработка баз данных FileMaker | Добавил: mihalych_2013 (01.01.2014)
Просмотров: 2535 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: