Crystal reports 基于第一个参数的晶体选择公式

Crystal reports 基于第一个参数的晶体选择公式,crystal-reports,report,formula,Crystal Reports,Report,Formula,我试图找到一个公式,它将根据选择的前两个参数为我带来记录,然后根据选择的前两个参数在公式中找到其他参数。这就是我到目前为止遇到的问题。我遇到的问题是,如果不是所有的公式都被选中,那么我就没有任何东西可以在报告上打印。因此,如果我选择{Sig1}和{Sig4},报告将显示为空白 {table.client} = {?client#} and {table.signature1} = {?Sig1} //to then bring only the below selected parameters

我试图找到一个公式,它将根据选择的前两个参数为我带来记录,然后根据选择的前两个参数在公式中找到其他参数。这就是我到目前为止遇到的问题。我遇到的问题是,如果不是所有的公式都被选中,那么我就没有任何东西可以在报告上打印。因此,如果我选择{Sig1}和{Sig4},报告将显示为空白

{table.client} = {?client#} and
{table.signature1} = {?Sig1}
//to then bring only the below selected parameters based from the {client#} and {?Sig1}
parameters. Not all parameters will be selected as well.
({table.signature2} = {?Sig2} or {?Sig2} = "") or
({table.signature3} = {?Sig3} or {?Sig3} = "") or
({table.signature4} = {?Sig4} or {?Sig4} = "") 
在此之前,我们将非常感谢您的帮助。 希望我很清楚

两件事:

  • 在公式的第一部分和第二部分之间不使用任何连接词(在您选中{?Sig1}之后)。我猜这是一个打字错误,因为CR会给你一个错误

  • 括号不起任何作用,因为OR运算符是可交换的。这是令人困惑的阅读,可能是至少部分责任的下一个问题

  • 只有注释后的一条语句需要计算为TRUE,才能使注释下的整个部分计算为TRUE。因此,如果您为{Sig2}输入一个值,但将{Sig3}留空,您仍然会返回所有记录,因为
    {Sig3}=”“
    的计算结果为TRUE。要解决此问题,需要在每行之间使用AND运算符


  • 您需要测试空参数值而不是空参数值吗?问题是,我给用户留下了将任何参数SIG2-SIG4保留为空的选项,因为“报告参数”下拉列表将显示空值,或者如果还有一个值不可选择。
    {table.client} = {?client#}
    and {table.signature1} = {?Sig1}
    and ({table.signature2} = {?Sig2} or {?Sig2} = "") //note that the parens are required here
    and ({table.signature3} = {?Sig3} or {?Sig3} = "") // since AND takes precedence
    and ({table.signature4} = {?Sig4} or {?Sig4} = "")