Vb.net “错误”;其余文本似乎不是公式的一部分;Crystal Reports 11.5.8.826

Vb.net “错误”;其余文本似乎不是公式的一部分;Crystal Reports 11.5.8.826,vb.net,vbscript,crystal-reports,crystal-reports-xi,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 =

我收到了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语法还是我声明变量的方式?或者我不应该像现在这样在crystal reports中使用VB.Net吗?

在crystal report中使用的语法是错误的,它总是以数据类型开头,然后是变量名,比如

numbervar pos;
stringvar cpu;
numbervar pos := 0;
stringvar cpu := 'abc';
NumberVar k := {@Counting_Data}/{@Counting_Fail} 
这个链接为您提供了类似的问题

如果您进一步了解变量,就范围而言,有3种类型的变量

  • 本地的
  • 全球的
  • 共享

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

  • 声明无初始性
  • 返回值为“Formula=”,与Crystal语法不同
  • 大多数函数和运算符更像Crystal语法,而不是常规basic
  • 所有返回值必须是同一类型
以下是我认为你想要的:

Dim xyz作为编号
Dim array1()作为数字
Dim array2()作为数字
Dim array3()作为数字
Dim array4()作为数字
xyz={VALUE1}
阵列1=阵列(111111212141215)
阵列2=阵列(12112121213141415)
阵列3=阵列(131131215141515)
阵列4=阵列(1911)
如果(阵列1中的xyz),则
公式={VALUE2}&“\u 001”
ElseIf(阵列中的xyz)则
公式={VALUE2}&“\u 002”
ElseIf(阵列中的xyz 3)则
公式={VALUE2}&“u003”
ElseIf(阵列中的xyz 4)则
公式={VALUE2}&“\u 004”
其他的
公式=totext({VALUE2})

如果在Crystal报告公式中使用了该代码示例,则结束?如果是这样,那么它将无法工作,因为CR不支持VB语法。你需要用水晶语法来编写公式。哦,我假设它可以使用VB,有一个“基本语法”的下拉选项,它似乎突出显示了我输入的很多VB,就好像我在记事本++或Visual Studio中编写一样!。。我想我最好去读一下水晶语法!它是以VB为模型的,但它使用特定的扩展来处理报告,而且根据我的经验,对Crystal语法的文档/支持要彻底得多。也有一些情况下,基本语法根本不起作用,例如记录或组选择公式。是的,我注意到crystal语法的信息更广泛,我最终将一半的工作删去,然后在crystal中重新开始,从长远来看,这要容易得多。我想这可能正是解决我的VB问题的方法。我按照ajay上面所说的使用变量声明用水晶语法重写了它,但明天早上我会尝试输入上面的内容!感谢Ajay,我用crystal语法更正了其他一些公式中的变量声明,现在它们工作得很好。