Database 在FileMaker中创建“复杂表单”——这可能吗?

Database 在FileMaker中创建“复杂表单”——这可能吗?,database,forms,filemaker,Database,Forms,Filemaker,我被要求研究FileMaker,以创建一个非常简单的数据库应用程序。该应用程序将处理联系人信息,一些关于组织主办的活动的信息,以及(我目前正在努力解决的)链接联系人和活动的RSVP信息,以及存储一些关于付款的数据 我想使用的是某种形式,用户可以在其中搜索联系人(名字/姓氏的任意组合)和事件(名字/日期的任意组合),从显示所有其他信息的两个列表中分别选择,以区分结果,添加一些额外信息并点击提交 到目前为止,我得到的最接近的是一个表单,用户可以手动输入ContactId和EventId,这意味着他/

我被要求研究FileMaker,以创建一个非常简单的数据库应用程序。该应用程序将处理联系人信息,一些关于组织主办的活动的信息,以及(我目前正在努力解决的)链接联系人和活动的RSVP信息,以及存储一些关于付款的数据

我想使用的是某种形式,用户可以在其中搜索联系人(名字/姓氏的任意组合)和事件(名字/日期的任意组合),从显示所有其他信息的两个列表中分别选择,以区分结果,添加一些额外信息并点击提交

到目前为止,我得到的最接近的是一个表单,用户可以手动输入ContactId和EventId,这意味着他/她首先必须转到另一个视图,搜索记录,并复制/粘贴id号

使用FileMaker真的没有办法更接近我的愿景吗

更好的选择是使用例如C和MsSQL构建一个新的定制应用程序吗

如果是,我如何将其出售给我的承包商?在这种情况下,这将是我的第一次商业应用,显然有一个安全因素有利于一个成熟的产品。然后我们甚至没有提到成本可能会增加,因为从头开始开发一个新的应用程序需要更长的时间


注意:我以前没有使用FileMaker的经验。我试着阅读文档,但是我没有找到任何能让我更接近我的具体需求的教程。我在MsSQL方面有相当丰富的经验,所以我对数据库管理的这一点和那一点都很了解,只是不了解FileMaker。

有很多方法可以做到这一点。这是一个让它工作的快速方法

假设有两张这样的桌子:

Contacts     Events 
--------     --------
ContactID    EventID
FirstName    EventDate
LastName     EventDetails
John
Smith
John Smith
ALL
FORM
--------
cContactMatch    =   CONTACTS/cMatchText
cEventMatch      =   EVENTS/cMatchText
在它们之间创建一个新的链接表,该表还存储所需的额外RSVP信息

RSVP
--------
fk_ContactID
fk_EventID
PaymentInfo
创建一个表单表

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将如下所示:

Contacts     Events 
--------     --------
ContactID    EventID
FirstName    EventDate
LastName     EventDetails
John
Smith
John Smith
ALL
FORM
--------
cContactMatch    =   CONTACTS/cMatchText
cEventMatch      =   EVENTS/cMatchText
在关系图中,按如下方式连接表:

Contacts     Events 
--------     --------
ContactID    EventID
FirstName    EventDate
LastName     EventDetails
John
Smith
John Smith
ALL
FORM
--------
cContactMatch    =   CONTACTS/cMatchText
cEventMatch      =   EVENTS/cMatchText
基于表单表创建名为表单的布局

将ContactSearch和EventSearch字段添加到布局中。添加PaymentInfo字段

向布局中添加两个门户,一个用于联系人表,一个用于事件

默认情况下,您应该看到每个门户中的所有记录

编写脚本或使用脚本触发器,在退出/修改其中一个搜索字段时刷新布局。这将刷新门户并显示您感兴趣的相关记录

向门户中的每一行添加一个按钮,并调用一个脚本,该脚本将全局变量设置为该门户行ID

例如:

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很有趣,是吗?

有很多方法可以做到这一点。这是一个让它工作的快速方法

假设有两张这样的桌子:

Contacts     Events 
--------     --------
ContactID    EventID
FirstName    EventDate
LastName     EventDetails
John
Smith
John Smith
ALL
FORM
--------
cContactMatch    =   CONTACTS/cMatchText
cEventMatch      =   EVENTS/cMatchText
在它们之间创建一个新的链接表,该表还存储所需的额外RSVP信息

RSVP
--------
fk_ContactID
fk_EventID
PaymentInfo
创建一个表单表

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将如下所示:

Contacts     Events 
--------     --------
ContactID    EventID
FirstName    EventDate
LastName     EventDetails
John
Smith
John Smith
ALL
FORM
--------
cContactMatch    =   CONTACTS/cMatchText
cEventMatch      =   EVENTS/cMatchText
在关系图中,按如下方式连接表:

Contacts     Events 
--------     --------
ContactID    EventID
FirstName    EventDate
LastName     EventDetails
John
Smith
John Smith
ALL
FORM
--------
cContactMatch    =   CONTACTS/cMatchText
cEventMatch      =   EVENTS/cMatchText
基于表单表创建名为表单的布局

将ContactSearch和EventSearch字段添加到布局中。添加PaymentInfo字段

向布局中添加两个门户,一个用于联系人表,一个用于事件

默认情况下,您应该看到每个门户中的所有记录

编写脚本或使用脚本触发器,在退出/修改其中一个搜索字段时刷新布局。这将刷新门户并显示您感兴趣的相关记录

向门户中的每一行添加一个按钮,并调用一个脚本,该脚本将全局变量设置为该门户行ID

例如:

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很有趣,是吗?

哇!我曾希望我能以一种“更简单”的方式完成这项工作——我考虑在这个项目中使用FileMaker的唯一原因是为了避免自己编写代码,而是能够依赖一些已经稳定并清除了bug的软件。如果有这么多“真正的编程”需要完成,我不妨使用我熟悉的技术。C和MSSQL,我们开始…=但是无论如何,非常感谢你的时间和努力!你现在得到了奖励=哇!我曾希望我能用一种“更简单”的方式来做这件事——这是我反对的唯一原因 在这个项目中使用FileMaker的想法是避免自己编写代码,而是能够依赖一些已经稳定和清除bug的软件。如果有这么多“真正的编程”需要完成,我不妨使用我熟悉的技术。C和MSSQL,我们开始…=但是无论如何,非常感谢你的时间和努力!你现在得到了奖励=