2013-02-05 122 views
1

我有一个Filemaker数据库,其中包含一个Members表,一个Events表和一个名为Attendance的连接表,它应列出哪些成员参加了哪些事件。出席人员为会员勾选了“允许创建新记录”(不需要事件)。在相关表中创建记录*如果以前不存在

数据到达Excel电子表格以导入考勤。但后来我想看看是否还有人出席谁是不是在我们的记录已经...有点像这样:

  1. 看看每一个在签到表
  2. 看到新添加的记录如果成员指出存在的成员表
  3. 如果是这样,什么都不做
  4. 别人创造他们的成员表一个新的记录,使用从考勤表数据。

如果我正确理解它,步骤3和4应该是这个样子:

Set Variable [ $fname; Value: Attendance::firstname ] 
Go To Layout ["Member" (Firstname)] 
New Record/Request 
Set Field [Member::Firstname; $fname] 

即把需要的信息到变量,在相关表格开始一个新的记录,并设置那里的数据到变量的值。

但是,我如何获得第2步?我猜测某种循环会通过出席的一组记录,并获取相关的标识符。如何向会员表显示该消息是否存在?

+0

进一步思考:在我的情况下,可以通过事件id完成第1步,这对最近的导入是唯一的。因此,像查找对话一样请求事件ID。我将编辑该问题以突出显示我仍需要帮助的部分。 – stringy

+0

你发现这个有什么运气吗?我正在尝试做同样的事情,如果它没有使用门户网站而不存在,则向相关表添加新记录。 –

回答

-1

如果您有很多会员,“Firstname”可能会有点轻微以查明唯一的成员! 因此,我推测你会为每个成员提供某种唯一的密钥。 从那里开始,在创建新记录之前搜索会员基础中的成员...

0

将两个表格链接成具有等式关系。

写一个脚本:

 // Loop through your attendance records. 
    // Be sure you're in the correct layout 
Go to Layout ["imported list"] 
    // Attempt to go to the membership record of the person who is attending the event. 
Go to Related Record [Show only records from: from table: "membership table"; using layout: "membership table" 
    // If the person who is attending IS in the membership list, you'll go to that member's record in the "membership table." 
    // If the person who is attending is NOT in the membership list, you'll get an error. You can use that error in an if statement to execute code to add that member. 
If [Get (LastError) = "101"] 
    // insert code to add new member 
End if 
0

既然你已经有MemberAttendance之间的关系,这意味着你可以“看到”来自全国各地的关系考勤表中的任何相关成员。

我们也知道您只需要评估新的考勤记录是否来自您的电子表格。

我还假设每个会员在电子表格中可能有多个出席记录。这可能不是这种情况,但假设它是可能的更安全。

我还假设您通过成员中的主键和出席中的外键(即Member::ID = Attendance::Member ID)将会员表链接到考勤表。

因此,这里的脚本程序,我建议:

  • 导入新的考勤记录到考勤表。
    • 这会给你一个发现一套只有新的考勤记录
  • 出席布局,与省略执行相关Member记录的发现,即:

    # This assumes you're already on the Attendance layout 
    Enter Find Mode 
    Set field [Member::ID ; "*"] 
    Omit record 
    Constrain Find 
    
  • 这会给你找到的一套出勤记录做没有匹配的会员记录。

从这里您可以遍历每个出勤记录并根据需要创建成员记录。

如果您在会员的成员端检查Allow creation - <考勤关系,您可以直接从考勤布局中设置成员表中的字段。

由于会员与考勤之间的1对多关系为1 =会员多=考勤,您需要检查以确保您的循环中尚未创建会员记录,即如果新会员有多个考勤记录您可能已经在循环中创建了成员记录。

你的循环应该是这样的:

Go to Record [First] 
Loop 
    If [IsEmpty(Member::ID)] 
     Set Field [Member::First Name] // This first Set Field will create your new Member Record as long as the "Allow Creation" is enabled on the Member side 
     Set Field [Member::Last Name] 
     ... This would be the rest of your set field steps for Member 
    End If 
    Go to Record [Next ; Exit After Last] 
End Loop 

这样,你不需要浏览您的考勤记录集了。此外,两个表的主键和外键都将通过关系本身的属性自动创建和设置。

相关问题