1

我有一个主/详细关系,如下图所示

在此处输入图像描述

我需要过滤 OrderHeaders 表中显示的数据,因此我编辑了本地查询(通过单击屏幕中的编辑查询链接),但过滤器的一部分基于计算属性,因此我需要使用PreprocessQuery方法,因为计算属性不会出现在查询的“过滤器”部分中。

但是现在我遇到了一个问题,在本地查询中,“写入代码”组合框不可用,就像在全局查询中一样,如下图所示

在此处输入图像描述

所以我不知道如何在本地查询中创建 PreprocessQuery 方法。

有人可以告诉我如何创建它吗?

如果它不适用于本地查询,是否有另一种方法可以按计算属性进行过滤?

4

1 回答 1

2

好的,首先从表中创建子查询。例如您的ProductsWithouDescriptionSortedProducts通过右键单击表和“添加查询”。(国家应该相当于你的“标题”表)

在此处输入图像描述

为查询命名,然后将参数添加到您需要的任何类型的查询中。

在此处输入图像描述

现在为它写一些代码:(这里的国家是我正在使用的表)

在此处输入图像描述

在此处输入图像描述

请注意,您的 NewParameter 现在是您的方法的“参数”。这将过滤此查询以仅显示CountryName等于参数的记录。您可以根据需要拥有任意数量的参数。

现在将该数据项添加到您的屏幕。

在此处输入图像描述

然后添加您需要的类型的新属性。(它也在添加数据项下)

我建议您取消选中Is required

在此处输入图像描述

这是我的屏幕的基本查询布局。我以表Locations为例,因为每个位置在我的数据模型中都有一个国家/地区。Locations 应该相当于 Customer 表。如果我展开位置(您的客户)表,我会注意到我无法直接添加新创建的查询。还要注意现在显示了 Created 属性。

在此处输入图像描述

如果您在左侧展开新查询,您将在底部看到参数。

在此处输入图像描述

单击它,进入其属性 (F4) 并将参数映射到新创建的属性。

在此处输入图像描述

现在您的过滤参数由我们刚刚创建的属性设置。

现在,您必须先设置属性,然后该查询才能显示任何内容。下面是如何做到这一点:

选择您的客户(我的是位置)表并在左上角单击旁边的向下箭头以编写代码并选择“SelectionChanged”方法:

在此处输入图像描述

现在写一些代码:

在此处输入图像描述

这里我的显示字符串是位置的计算字段。因此,每次您在位置网格中选择某些内容时,它都会使用该“DisplayString”来过滤“MynewFavoriteQuery”。

需要注意的一些事项:

如果您为子查询设置参数Optional,只要属性为NULL ,查询就会显示所有内容而不进行过滤。(实际上我不确定这个,因为我使用它有点不同,但你可以玩它看看你得到了什么)

在此处输入图像描述

如果您将属性设置为必需,如果该属性设置为 null,则会导致屏幕上出现验证错误。

您可能还需要对此进行微调,因为在创建屏幕时该属性始终初始化为 null。您可以在第一次生成屏幕时在编写代码中编辑“ScreeCreated”方法,以便为该属性设置一些值。

如果您有任何问题,请告诉我。

于 2013-09-05T14:31:00.047 回答