Создание «сложных форм» в FileMaker – возможно ли это вообще?

StackOverflow https://stackoverflow.com/questions/1026317

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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 для контактов будет выглядеть примерно так:

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

Уф.

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

FileMaker — это весело, да?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top