我目前正在尝试使用库存中每件商品的时间表报告库存数量;
在时间范围内选定的最短日期的库存
在时间范围内选定的最长日期的库存
我在交易中有一个项目的单个数量字段,我将其添加到我的报告中两次,但是在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)
希望这有助于澄清我在
后的内容答案 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 Date
到Max 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}));