Crystal reports Crystal Reports会自动在参数输入的左侧添加空格。

Crystal reports Crystal Reports会自动在参数输入的左侧添加空格。,crystal-reports,crystal-reports-2010,Crystal Reports,Crystal Reports 2010,所以从一开始,我想为我的无知道歉,我认为这个答案很简单。不幸的是,我在任何地方都找不到答案。这个问题是这样的: 我正在创建一个报告,它有一个参数将结果限制为一条记录。如果最终用户键入他们正在查找的号码,则不会产生任何结果。如果在该数字之前放置两个空格,则会产生相应的结果。被引用的字段限制为9个字符,而当前的记录只有7位,这就是为什么需要两个空格的原因 如果有人输入7位数,Crystal会在左边加上两个空格 用户输入:“1234567”,但会被解释为:“1234567” 任何协助都将不胜感激 只要

所以从一开始,我想为我的无知道歉,我认为这个答案很简单。不幸的是,我在任何地方都找不到答案。这个问题是这样的:

我正在创建一个报告,它有一个参数将结果限制为一条记录。如果最终用户键入他们正在查找的号码,则不会产生任何结果。如果在该数字之前放置两个空格,则会产生相应的结果。被引用的字段限制为9个字符,而当前的记录只有7位,这就是为什么需要两个空格的原因

如果有人输入7位数,Crystal会在左边加上两个空格

用户输入:“1234567”,但会被解释为:“1234567”


任何协助都将不胜感激

只要用户总是准确输入7个字符,并且您总是希望在他们输入的数据的开头加上2个空格,那么您就可以使用以下非常简单的公式来解决这个问题

“”&ToText({?ParameterFieldName})

可能不需要
ToText()
功能。在连接字符串时,最好将其包括在内,以确保避免数据不匹配错误的任何可能性

但是,如果您认为某人有可能输入多于或少于7个字符,那么公式需要更加健壮。如果要强制要求在参数字段中始终输入7个字符,则可以在创建/编辑参数字段时设置“最小长度”和“最大长度”属性,这可能对您有用

编辑以回答后续问题

CR公式中没有任何循环结构可用,因此最好使用CASE语句或嵌套IF结构。下面是嵌套if的外观。使用以下公式,用户可以输入2到8之间的任意数量的字符,并在字符串前面添加足够的空格,以确保结果的长度为9个字符。在本例中,我省略了ToText()函数。如果使用上述第一个公式所用的函数,则公式将更安全。只要参数字段设置为接受字符串文本,就不必这样做

If Length({?ParameterField}) = 8 Then
     " " & {?ParameterField})
Else If Length({?ParameterField}) = 7 Then
     "  " & {?ParameterField})
Else If Length({?ParameterField}) = 6 Then
     "   " & {?ParameterField})
Else If Length({?ParameterField}) = 5 Then
     "    " & {?ParameterField})
Else If Length({?ParameterField}) = 4 Then
     "     " & {?ParameterField})
Else If Length({?ParameterField}) = 3 Then
     "      " & {?ParameterField})
Else If Length({?ParameterField}) = 2 Then
     "       " & {?ParameterField})

您的参数值是否被视为数字数据?如果是,则添加空格可能会导致数据不匹配错误,因为该值现在将被视为字符串数据。另外,您的参数是如何使用的?是否将其与If语句中的另一个值进行比较?如果您可以共享计算参数值的公式,它可能会帮助我们为您找到正确的解决方案。参数是引用日志号的字符串。日志编号是系统为每个日志生成的。我只会得到结果,如果有9个字符。因此,如果我在当前日志号(7个字符)前面键入两个空格,它将为我提供适当的日志记录,但是如果我只键入没有空格(7个字符)的日志号,它将找不到任何结果。我希望与观众的最终用户能够在数字输入,它将添加多少空间,它需要弥补9个字符。提前谢谢你的帮助,效果很好。如果不是两个空格,而是空格+字符=9,您是否可以共享公式?非常感谢你的帮助