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

Crystal Reports automatically add spaces to left of input for parameter.

所以从一开始,我想为我的无知道歉,我认为这个答案是非常简单的。不幸的是,我无法在任何地方找到答案。本期是这样的:

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

如果有人输入 7 位数字,Crystal 是否有办法将两个空格附加到左侧。

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

如有任何帮助,我们将不胜感激。

只要用户始终正好输入 7 个字符,并且您始终希望在他们输入的数据的开头恰好附加 2 个空格,那么您可以使用如下所示的非常简单的公式解决此问题。

" " & ToText({?ParameterFieldName})

可能不需要ToText()函数。连接字符串时,将它包括在内是个不错的主意,但可以确保避免任何可能的数据不匹配错误。

如果您认为有人输入的字符可能多于或少于 7 个,那么公式就需要更加稳健一些。如果您想强制要求始终在参数字段中输入 7 个字符,则可以在 creating/editing 您的参数字段时设置最小长度和最大长度的属性,这可能对您有用。

编辑 回答后续问题

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})