错误"剩余文本似乎不是公式的一部分" Crystal Reports 11.5.8.826

时间:2017-12-29 12:20:02

标签: vb.net vbscript crystal-reports crystal-reports-xi

我收到了Crystal Reports中问题标题中所述的错误。我已经进行了一段时间的故障排除,我正在画空白。我在单独的公式中有一些简单的If..Then..Else语句和Select..Case语句,但我收到的所有语句都有相同的错误。我在VB.Net中编写公式,我怀疑问题源于我如何声明我的变量。

公式的一个例子是:

Dim xyz As Number = {VALUE1} 
Dim array1 = New Integer() {1111, 1112, 1214, 1215} 
Dim array2 = New Integer() {1211, 1212, 1213, 1414, 1415} 
Dim array3 = New Integer() {1311, 1312, 1514, 1515} 
Dim array4 = New Integer() {1911} 

If Array.IndexOf(array1, xyz) >= 0 Then
    {VALUE2} & "_001"
ElseIf Array.IndexOf(array2, xyz) >= 0 Then
    {VALUE2} & "_002"
ElseIf Array.IndexOf(array3, xyz) >= 0 Then
    {VALUE2} & "_003"
ElseIf Array.IndexOf(array4, xyz) >= 0 Then
    {VALUE2} & "_004"
Else
    {VALUE2}
End If

当我在所选字段中输入该公式时,它会突出显示第1行=上的所有内容(Dim xyz As Number =...)。

经过搜索,我尝试使用等号(:=)冒号和冒号来结束if语句,但无法在线找到更多信息来指导我。我确实发现线程暗示.dll可能会丢失,但我目前没有对我正在使用的系统上的许多区域拥有写入权限,所以对我来说任何修复都是不可能的。

我的问题很简单,为什么我收到此错误?这是我的If..Then..Else语法还是我如何声明变量?或者我不应该像我一样在水晶报告中使用VB.Net?

2 个答案:

答案 0 :(得分:1)

您的语法在Crystal报表中使用是错误的,它始终以数据类型开头,然后是变量名称,如

numbervar pos;
stringvar cpu;
numbervar pos := 0;
stringvar cpu := 'abc';
NumberVar k := {@Counting_Data}/{@Counting_Fail} 

这个类似问题的链接有crystal reports error : remaining text does not appear to be part of the formula

如果您更多地了解变量,则在范围

方面有3种类型的变量
  • 本地
  • 全球
  • 共享

https://www.tutorialspoint.com/crystal_reports/crystal_reports_creating_variables.htm

答案 1 :(得分:1)

Crystal确实支持基本语法,但它更像VBA或VB6而不是.Net,并且也有自己的特点和限制。

  • 声明中没有初始化
  • 返回值为“Formula =”,并不像Crystal语法中那样暗示。
  • 大多数函数和运算符更像是Crystal语法而不是常规基本函数。
  • 所有返回值必须属于同一类型。

以下是我认为您的目标:

Dim xyz As Number
Dim array1() as number
Dim array2() as number
Dim array3() as number
Dim array4() as number

xyz = {VALUE1}
array1 =  array(1111, 1112, 1214, 1215)
array2 = array(1211, 1212, 1213, 1414, 1415)
array3 = array(1311, 1312, 1514, 1515)
array4 = array(1911)

If  (xyz in array1) Then
    Formula = {VALUE2} & "_001"
ElseIf (xyz in array2) Then
    Formula = {VALUE2} & "_002"
ElseIf (xyz in array3) Then
    Formula = {VALUE2} & "_003"
ElseIf (xyz in array4) Then
    Formula = {VALUE2} & "_004"
Else
    Formula = totext({VALUE2})
End If