基础知识:
你们的关系:
Calendar Display Rows::display_images = Images::image number
将从显示日历显示行的布局中找到所有带有image number 的图像,该图像与display_images 的任何重复项中的值匹配。例如,如果 display_images[1] = 1 和 display_images[2] = 2,您将通过关系获得图像 1 和 2,无论为关系建立的排序顺序如何。
假设 display_images 的重复以与您的关系的排序顺序相同的顺序填充,并且您拥有的唯一空白重复位于该字段重复的最高端 (1, 2, 3, [空白]可以,但 1, [空白], 3, 4 不行),您可以对Calendar Display Rows::show images 使用以下计算:
GetNthRecord (
Extend ( Images::image ) ;
Get ( CalculationRepetitionNumber )
)
在上面,GetNthRecord 按排序顺序获取图像中相关记录的第 n 条记录。 Extend 允许重复 show images 字段中的任何重复使用相关图像,Get ( CalculationRepetitionNumber ) 告诉 FileMaker 重复 1 获取值 1,重复 2 获取值 2,等等。
更高级:
上述假设(匹配排序顺序,中间没有空白字段)可能适用于日历,但可能不适用于图库。您完全有可能需要一些允许空白字段或不匹配的排序顺序的东西。
为此,可能需要自定义函数(如果您有 FileMaker Advanced)。该函数可以重复查找到的图像记录并测试 display_images[i] 是否与图像编号匹配。
Find Proper Image自定义函数:
Let (
targetImageIndex = GetRepetition ( Calendar Display Rows::display_images ; forRepetition )
;
Case (
IsEmpty ( targetImageIndex ) ; "" ;
workingRecord > Count ( Images::image number ) ; "" ;
targetImageIndex = GetNthRecord ( Extend ( Images::image number ) ; workingRecord ) ; GetNthRecord ( Extend ( Images::image ) ; workingRecord ) ;
Find Proper Image ( forRepetition ; workingRecord + 1 )
)
)
那么show images计算字段中的代码将是:
Find Proper Image ( Get ( CalculationRepetitionNumber ) ; 1 )