我收到了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?
答案 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,并且也有自己的特点和限制。
以下是我认为您的目标:
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