Crystal Reports中的WHERE子句的等效项

时间:2014-04-17 20:20:13

标签: sql crystal-reports where

这个水晶报告程序被丢弃在我的腿上,我是一个崭新的品牌。我理解这个概念,但我在这里碰到了一堵墙。

还有一个类似的问题: Crystal Reports equivalent of 'WHERE'

但它和答案都针对(似乎)"总计"列,而我想只是只显示行中的一列(在这种情况下,如果" CostType"等于0)。

我有两个数据表我正在阅读以创建此报告。他们通过公共列名称(ItemKey)加入。不幸的是,在第二个表中,存在同一项的多个记录。我只想要CostType为0的项目。

这在SQL中非常简单,即使对于像我这样的初学者也是如此,但我无法弄清楚如何有效地说:"只有在CostType为0和#34时才显示项目。与Crystal Reports。

Item_Cost表(示例):

ItemKey      Special         Cost         CostType
001          TRUE            55.00        0
002          FALSE           10.00        0
003          TRUE            20.00        1

项目表(示例):

ItemKey      Description     Mode  
001          Whatever        EE 
002          Random          AB 
003          Unimportant     GE

出现的内容:

Item         Description     Mode  
Box          Whatever        EE 
Square       Random          AB 
Circle       Unimportant     GE

我想要展示的内容:

Item         Description     Mode  
Box          Whatever        EE 
Square       Random          AB 

我希望这一切都有道理。基本上,如果这是一个SQL查询,我只是说" WHERE CostType = 0"最后,我不会得到所有其他具有不同成本类型的项目。

我应该提到这完全由Crystal Reports处理。我没有使用SQL字符串并将其传入或者其他内容。显示窗口的功能如下:

    Dim PartsDemandReport As CrystalDecisions.CrystalReports.Engine.ReportDocument = New crptIndentedBomXLBom
    PartsDemandReport.SetDataSource(GLOBAL_VARIABLES.GlobalBomIndented)

    Dim CrystalReportViewerForm As New frmCrystalReportViewer
    CrystalReportViewerForm.CrystalReportViewer1.ReportSource = PartsDemandReport
    CrystalReportViewerForm.Show()
    PartsDemandReport = Nothing

如果有一种方法可以简单地强制Crystal Reports添加" WHERE CostType = 0"那就太棒了。提前谢谢。

1 个答案:

答案 0 :(得分:6)

有几种方法可以做到这一点:

  1. 如果您不需要整个报告中的CostType not equal to 0,那么您可以直接提供select expert作为where clause作为水晶报告。
  2. 示例:

    转到Report ---> Selection Formula ---> Record这个打开的公式窗口,添加到下面的行

    CostType = 0
    

    这将确保只从数据库中恢复成本类型= 0

    2.如果您需要cost type <> 0报告中的任何位置。然后为ItemDescriptionMode列添加以下条件

    示例

    @Item:
    
    if cost type = 0 
    then <<Database Item field >>
    

    将其放在Item列的详细部分中。

    对于其他列也一样。