我有一个我正在处理的报告,其中有一个输入参数(strSchoolIds),它是一串逗号分隔的唯一schoolId列表。我想将此字符串转换为数字数组,然后可以在记录选择公式中使用。这是我到目前为止所提出的。但每当我查看报告时,第一所学校就会被使用。
strSchoolIds的示例输入字符串可能是1,3,63,237,281
我想要的结果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;
答案 0 :(得分:2)
我的代码类似于:
{Schools.schoolId} in schoolIdsArray
它运作正常。
您确定您的阵列已正确填充吗?
您可以通过添加新的未绑定字符串字段并将其放在公式
中来快速测试ToText(schoolIdsArray[1]) + ", " + ToText(schoolIdsArray[2])
答案 1 :(得分:2)
我在使用Nathan Koop的建议并在其上进行调试之后想出来了。结果我需要Redim
schoolIdsArray与字符串数组schools
的arrLen,然后再添加值。
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;
答案 2 :(得分:0)
在代码的这一部分中,我添加了冒号并且它有效...
schoolIdsArray[i] := ToNumber(Trim(schools[i]));
希望这会有所帮助......
答案 3 :(得分:0)
发现上述代码中有一点错误:
schoolIdsArray [i] = ToNumber(Trim(schools [i]));
这应该是:
schoolIdsArray [i] := ToNumber(Trim(schools [i]));