有很多方法可以做到这一点。这是使其正常工作的一种快速方法。
比方说,你有两个表是这样的:
Contacts Events
-------- --------
ContactID EventID
FirstName EventDate
LastName EventDetails
在它们之间创建一个新的链接表也存储要额外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连络会是这个样子:
John
Smith
John Smith
ALL
在关系图中,按如下方式连接表:
FORM
--------
cContactMatch = CONTACTS/cMatchText
cEventMatch = EVENTS/cMatchText
基于FORM表创建一个称为FORM的布局。
添加字段ContactSearch和EventSearch到布局。添加PaymentInfo字段。
将两个PORTALS添加到布局,一个用于Contacts表,一个用于Events。
默认情况下,您应该看到每个这些门户中的所有记录。
编写一个脚本或使用脚本触发器,只要其中一个搜索字段是Exited/Modified,就会刷新布局。这应刷新门户并向您显示您感兴趣的相关记录。
向门户中的每一行添加一个按钮,并调用将该全局变量设置为该门户行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
Phew。
你应该回来,准备搜索联系人,事件和“提交”表单来创建更多的RSVP。
FileMaker很有趣,呃?
哇!我曾希望能够以更简单的方式做到这一点 - 我考虑使用FileMaker进行此项目的唯一原因是避免自己编写代码,而是可以依靠一些已经稳定并且缺陷清理的软件。如果有这么多'真正的编程'必须完成,我不妨使用我熟悉的技术。 C#和MSSQL,这里我们去...... =)但无论如何,非常感谢您的时间和精力!你现在已经获得奖励! =) – 2009-07-04 22:46:24