因此,从一开始,我想为我的无知表示歉意,并且我认为这个答案很简单。不幸的是,我找不到任何答案。问题是这样的:
我正在创建一个报告,它具有一个将结果限制为一条记录的参数。如果最终用户键入他们要查找的数字,则不会产生任何结果。如果在该数字之前放置两个空格,将产生适当的结果。被引用的字段限制为9个字符,并且现在的记录只有7位数字,这就是为什么需要两个空格的原因。
如果有人输入7位数字,Crystal会在左边添加两个空格吗?
用户输入:“ 1234567”,但系统将其解释为:“ 1234567”
任何帮助将不胜感激。
答案 0 :(得分:0)
只要用户总是输入正确的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})