Crystal Reports:无法使用此功能,因为必须稍后对其进行评估

时间:2015-01-02 09:31:17

标签: c# crystal-reports

我目前正在尝试使用库存中每件商品的时间表报告库存数量;

  • 在时间范围内选定的最短日期的库存

  • 在时间范围内选定的最长日期的库存

我在交易中有一个项目的单个数量字段,我将其添加到我的报告中两次,但是在select expert下都有不同的公式。

  • Stocks.Date = MINIMUM(Stocks.Date)
  • Stocks.Date = MAXIMUM(Stocks.Date)

我按产品分组,并在组头中包含所有字段。我曾尝试在网上寻找解决方案,但我还没有找到真正解决问题的方法。如果您需要更多信息请问,这会破坏我的大脑。

基本上我想要的是(对于每个库存商品):

  • 数量字段1: SELECT Stock.Quantity WHERE Stock.Date = MINUMUM(Stock.Date)

  • 数量字段2: SELECT Stock.Quantity WHERE Stock.Date = MAXIMUM(Stock.Date)

希望这有助于澄清我在

后的内容

4 个答案:

答案 0 :(得分:1)

您不能在记录选择公式中包含Crystal的聚合函数,因为它是自引用的。它就像说"将集合A定义为集合A"的最大元素。在您的情况下,您有效地说,"仅在报告中包含日期是我报告中最新记录的记录" ...没有意义。

相反,您必须包含所有记录,并且仅包含"流程"那些{StockSales.Date}=maximum({StockSales.Date},{StockSales.ItemID})。您可以通过将每个记录的日期与该项目ID的最大日期进行比较,并在变量匹配时将库存数量保存在变量中来实现此目的。然后,您可以在项目的组页脚中显示该变量。

第一步是将所有Group Header 1元素移动到Group Footer 1中。然后,您需要创建2个新公式来管理变量:

//{@Update variable}
// Place this formula in the Details section
whileprintingrecords;
numbervar qty;
if {StockSales.Date}=maximum({StockSales.Date},{StockSales.ItemID})
 then qty := {StockSales.Quantity}

//{Display variable}
// Place this formula in the Group Footer 1 section where you want the quantity to display
whileprintingrecords;
numbervar qty;

答案 1 :(得分:1)

创建两个SQL表达式字段:

// {%MIN_DATE}
(
  SELECT MINIMUM(Date) FROM Stock
)

// {%MAX_DATE}
(
  SELECT MAXIMUM(Date) FROM Stock
)

然后在记录选择公式中引用它们:

{Stock.Date} IN [{%MIN_DATE},{%MAX_DATE}]

答案 2 :(得分:0)

您的Select Expert对我没有任何意义。

您正在重新审核从Min DateMax Date的记录,换句话说,您正在将整个表数据重新包含到您的报告中,在这种情况下,选择专家的用途是什么。

如果您在选择专家中没有提及任何内容,那么您也可以使用整个表数据。

如果你真的想过滤一些数据然后向用户提供一些参数,以便你可以过滤这些参数,那么你的选择专家会变成类似的东西。

Stocks.Date>={?StartDate} and Stocks.Date<={?EndDate}

如果我的理解是错误的,那么请根据您的要求清楚地编辑问题。

编辑---------------------------------------------- ---------------------------------------

在这种情况下,请不要使用选择专家,在公式字段中对报表本身进行计算。

创建一个公式:

@Minimumn

if Stock.Date = MINUMUM(Stock.Date)
then <Stockitemahere>

For Maximum创建另一个公式:

@Maximum

if Stock.Date = MAXIMUM(Stock.Date)
then <Stockitemahere>

将两个公式放在报告的设计部分。

注意日期过滤不应该是选择专家

答案 3 :(得分:0)

如果您的目标是在报告中显示最大值和最小值,则可以尝试以下步骤:

转到群组字段,右键单击对象 - &gt; Format Object - &gt; Display String - &gt;给出公式:

CStr (Maximum ({Stocks.Date}));

要在同一报表中同时显示最小值和最大值,请将“日期”字段拖动两次到报表中,对于一个对象,将“最小日期”再次设置为“最大日期”。

最大值:CStr (Maximum ({Stocks.Date}));
最低限度:CStr (Minimum ({Stocks.Date}));