Создание «сложных форм» в FileMaker - это вообще возможно? - PullRequest
1 голос
/ 22 июня 2009

Меня попросили заглянуть в FileMaker для создания довольно простого приложения базы данных. Приложение будет обрабатывать контактную информацию, некоторую информацию о событиях, проводимых организацией, и - вот где я сейчас борюсь - информацию RSVP, которая связывает контакты и события, а также хранит некоторые данные об оплате.

То, что я хотел бы использовать, - это какая-то форма, в которой пользователь может найти контакт (любую комбинацию имени / фамилии) и событие (любую комбинацию имени / даты), выбрать каждый из двух соответствующих списков. (где также отображается вся другая информация, чтобы различать результаты), добавьте некоторую дополнительную информацию и нажмите «Отправить».

Самое близкое, что я получил до сих пор, - это форма, в которой пользователь может ввести ContactId и EventId вручную, что означает, что он / она сначала должен перейти в другое представление, найти записи и скопировать / вставить идентификатор. число.

  • Нет ли способа приблизиться к моему видению с помощью FileMaker?

  • Лучшим вариантом будет создание нового пользовательского приложения с использованием, например, C # и MsSQL?

  • Если так, как я могу продать это моему подрядчику? Поскольку в этом случае это будет мое первое коммерческое применение, очевидно, что существует «фактор безопасности», который говорит в пользу устоявшегося продукта. И затем мы даже не упомянули, что стоимость, вероятно, увеличится, поскольку разработка нового приложения с нуля займет гораздо больше времени.

Примечание: у меня нет опыта работы с FileMaker. Я пытался прочитать документацию, но мне не удалось найти учебники, которые бы приблизили меня к моим конкретным потребностям. Я довольно опытный в MsSQL, так что я знаю об этом и об управлении базами данных в целом - только не в FileMaker.

1 Ответ

4 голосов
/ 26 июня 2009

Есть множество способов сделать это. Это быстрый способ заставить его работать.

Допустим, у вас есть две такие таблицы:

Contacts     Events 
--------     --------
ContactID    EventID
FirstName    EventDate
LastName     EventDetails

Создайте между ними новую таблицу связей, в которой также будет храниться дополнительная информация о RSVP.

RSVP
--------
fk_ContactID
fk_EventID
PaymentInfo

Создать таблицу FORM

FORM
--------
ContactSearch
cContactMatch = Calculation, If(isEmpty(ContactSearch) ; "ALL" ; ContactSearch)
EventSearch
cEventMatch = Calculation, If(isEmpty(EventSearch) ; "ALL" ; EventSearch)

Добавьте следующие поля в таблицы контактов и событий:

Contacts
--------
cMatchField = Calculation, Stored, (FirstName + NEWLINE + LastName + NEWLINE + ALL + NEWLINE + Firstname LastName) 

Events
--------
cMatchField = Calculation, Stored, (EventDate + NEWLINE + EventDetails + NEWLINE + ALL)

Это означает, что cMatchField for Contacts будет выглядеть примерно так:

John
Smith
John Smith
ALL

В диаграмме взаимосвязей соедините таблицы следующим образом:

FORM
--------
cContactMatch    =   CONTACTS/cMatchText
cEventMatch      =   EVENTS/cMatchText

Создайте макет с именем FORM на основе таблицы FORM.

Добавьте поля ContactSearch и EventSearch в макет. Добавьте поле PaymentInfo.

Добавьте два ПОРТАЛА к макету, один для таблицы контактов, один для событий.

По умолчанию вы должны видеть все записи на каждом из этих порталов.

Напишите сценарий или используйте триггер сценария, который обновляет макет всякий раз, когда одно из этих полей поиска закрывается или изменяется. Это должно обновить порталы и показать интересующие вас записи.

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

Например:

Script: Set Selected Contact ID
Set Variable ($$ContactID ; Contacts::ContactID)

Script Set Selected Event ID
Set Variable ($$EventID ; Events::EventID)

Добавьте еще одну кнопку в макет и новый скрипт.

Script: Create RSVP
# Check that a contact and event have been selected
If(isEmpty($$ContactID) or isEmpty($$EventID)
    Exit Script
End If
# Get the payment info that has been entered
Set Variable ($PaymentInfo ; FORM::PaymentInfo)
# Create the RSVP Link record
Go To Layout(RSVP)
Create New Record
Set Field(fk_ContactID ; $$ContactID)
Set Field(fk_EventID ; $$EventID)
Set Field(PaymentInfo ; $PaymentInfo)
Commit Records
Go to Layout (Original Layout)
# Clear the search fields
Set Field(PaymentInfo; "")
Set Field(ContactSearch; "")
Set Field(EventSearch; "")
Set Variable($$ContactID; "")
Set Variable($$EventID; "")
Commit Records
Refresh Screen

Уф.

И вы должны вернуться, чтобы найти контакты, события и «отправить» форму для создания дополнительных RSVP.

FileMaker - это весело, а?

...