Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Crystal reports 水晶报告席-转换CSV输入字符串参数到编号数组,用于记录选择公式_Crystal Reports - Fatal编程技术网

Crystal reports 水晶报告席-转换CSV输入字符串参数到编号数组,用于记录选择公式

Crystal reports 水晶报告席-转换CSV输入字符串参数到编号数组,用于记录选择公式,crystal-reports,Crystal Reports,我有一个正在编写的报告,其中有一个输入参数(strSchoolIds),它是一个由逗号分隔的唯一学号列表组成的字符串。我想把这个字符串转换成一个数字数组,然后在记录选择公式中使用。这是我到目前为止的想法。但每当我看报告时,第一个学生ID就会被使用 strChoolids的示例输入字符串可能是1,3,63237281 我希望得到的SQL查询与此类似 Select name, phone, numStudents from schools where schoolId in (1,3,63,237

我有一个正在编写的报告,其中有一个输入参数(strSchoolIds),它是一个由逗号分隔的唯一学号列表组成的字符串。我想把这个字符串转换成一个数字数组,然后在记录选择公式中使用。这是我到目前为止的想法。但每当我看报告时,第一个学生ID就会被使用

strChoolids的示例输入字符串可能是
1,3,63237281

我希望得到的SQL查询与此类似

Select name, phone, numStudents 
from schools
where schoolId in (1,3,63,237,281) and active =1  
我目前的代码是:

StringVar Array schools := Split ({?strSchoolIds}, ",");
Local NumberVar arrLen := UBound( schools );
Local NumberVar i := 1;

NumberVar Array schoolIdsArray;
While i <= arrLen Do
(
    schoolIdsArray[i] = ToNumber(Trim(schools[i]));
    i := i + 1;
);


{Schools.schoolId} in schoolIdsArray
and {Schools.active} = 1;
StringVar数组学校:=Split({?strSchoolIds},“,”);
本地号码:arrLen:=UBound(学校);
局部数为i:=1;
数字数组;

而我得到的代码类似于:

{Schools.schoolId} in schoolIdsArray
它工作正常

您确定阵列已正确填充吗

您可以通过添加一个新的未绑定字符串字段并将其放入公式中来快速测试这一点

ToText(schoolIdsArray[1]) + ", " + ToText(schoolIdsArray[2])

我的代码类似于:

{Schools.schoolId} in schoolIdsArray
它工作正常

您确定阵列已正确填充吗

您可以通过添加一个新的未绑定字符串字段并将其放入公式中来快速测试这一点

ToText(schoolIdsArray[1]) + ", " + ToText(schoolIdsArray[2])

在使用Nathan Koop的建议并在此基础上进行调试后,我找到了答案。结果是,我需要使用字符串数组
schools
的arrLen对schoolIDSRarray进行
Redim
操作,然后才能向其添加值

StringVar Array schools := Split ({?strSchoolIds}, ",");
Local NumberVar arrLen := UBound( schools );
Local NumberVar i := 1;
NumberVar Array schoolIdsArray;
Redim schoolIdsArray[arrLen];
While i <= arrLen Do
(
    schoolIdsArray[i] = ToNumber(Trim(schools[i]));
    i := i + 1;
);

{Schools.schoolId} in schoolIdsArray
and {Schools.active} = 1;
StringVar数组学校:=Split({?strSchoolIds},“,”);
本地号码:arrLen:=UBound(学校);
局部数为i:=1;
数字数组;
Redim数组[arrLen];

而我在使用Nathan Koop的建议并在此基础上进行调试之后,才发现了这个问题。结果是,我需要使用字符串数组
schools
的arrLen对schoolIDSRarray进行
Redim
操作,然后才能向其添加值

StringVar Array schools := Split ({?strSchoolIds}, ",");
Local NumberVar arrLen := UBound( schools );
Local NumberVar i := 1;
NumberVar Array schoolIdsArray;
Redim schoolIdsArray[arrLen];
While i <= arrLen Do
(
    schoolIdsArray[i] = ToNumber(Trim(schools[i]));
    i := i + 1;
);

{Schools.schoolId} in schoolIdsArray
and {Schools.active} = 1;
StringVar数组学校:=Split({?strSchoolIds},“,”);
本地号码:arrLen:=UBound(学校);
局部数为i:=1;
数字数组;
Redim数组[arrLen];

在这部分代码中,我添加了一个冒号,它起了作用

schoolIdsArray[i] := ToNumber(Trim(schools[i])); 

希望这有帮助…

在代码的这一部分,我添加了一个冒号,它成功了

schoolIdsArray[i] := ToNumber(Trim(schools[i])); 

希望这有帮助…

发现上面的代码中有一点错误:

schoolIDSRarray[i]=ToNumber(Trim(schools[i])

这应该是:

schoolIDSRarray[i]:=tonNumber(Trim(schools[i])


发现上面的代码有一点错误:

schoolIDSRarray[i]=ToNumber(Trim(schools[i])

这应该是:

schoolIDSRarray[i]:=tonNumber(Trim(schools[i])


我开始尝试按照建议创建一个公式字段,但收到了错误“`”。因此,我在schools字符串数组上创建了一个公式字段,当我指定索引时,它会正确显示。我一直遵循这个想法,并展示了ToText(UBound(schools))的值;ToText(arrLen);i while控制结构ToText前后(i);所有值都恢复正确。当Crystal Reports到达语句schoolIDSRarray[i]=ToNumber(Trim(schools[i])时;它因错误而阻塞
下标必须介于1和数组大小之间
oops-收到的第一个错误是
下标必须介于1和数组大小之间
我开始尝试按照建议创建公式字段,但收到错误``。因此,我在schools字符串数组上创建了一个公式字段,当我指定索引时,它会正确显示。我一直遵循这个想法,并展示了ToText(UBound(schools))的值;ToText(arrLen);i while控制结构ToText前后(i);所有值都恢复正确。当Crystal Reports到达语句schoolIDSRarray[i]=ToNumber(Trim(schools[i])时;它因错误而阻塞
下标必须介于1和数组大小之间
oops-收到的第一个错误是
下标必须介于1和数组大小之间