AR16 数组脚本问题
我有个json是这样的[*]"wei_hai_shi_bie":[
{
"name":"机械伤害",
"ancestors":[
{
"Id":"D1FE114C-2118-5E91-DA49-3A0B54DB0F94",
"HierarchyId":"/31/",
"HierarchyLevel":1,
"ColorContent":"",
"ColorSwitch":false,
"name":"危害识别-南京诚志送电"
}
],
"id":"fdf53428-6039-b2c3-76d5-3a0b54db5920",
"dictCode":"D1FE114C-2118-5E91-DA49-3A0B54DB0F94",
"nodeCode":"ji_xie_shang_hai",
"colorContent":"",
"colorSwitch":false,
"hierarchyId":"/31/1/",
"TAGSORT":0
},
{
"name":"触电",
"ancestors":[
{
"Id":"D1FE114C-2118-5E91-DA49-3A0B54DB0F94",
"HierarchyId":"/31/",
"HierarchyLevel":1,
"ColorContent":"",
"ColorSwitch":false,
"name":"危害识别-南京诚志送电"
}
],
"id":"0cf5622a-8563-9137-c706-3a0b54db70e6",
"dictCode":"D1FE114C-2118-5E91-DA49-3A0B54DB0F94",
"nodeCode":"chu_dian",
"colorContent":"",
"colorSwitch":false,
"hierarchyId":"/31/2/",
"TAGSORT":0
}
]我要取出,拿$.['wei_hai_shi_bie'][*].name。与”机械伤害,触电,电弧灼伤,误送“作比较。如果包含加方框,但是在软件中放入数据,会自动循环$.['wei_hai_shi_bie'][*].name,导致我脚本拿出来的数据是这样的,我想的是两个一行比如。但是我现在出来的是这样的。代码如下Function ProcessData(a As String, b As String) As String
Dim arrA() As String
arrA = Split(a, ";")
Dim result As String
result = ""
' 遍历数组B中的每个元素
Dim i As Integer
For Each itema As String In arrA
If itema = b Then
result = result & itema & "■"
Else
result = result & itema & "□"
End If
Next
' 去掉最后一个逗号
result = Left(result, Len(result))
' 返回结果
ProcessData = result
End Function
我们分析了您的文件,并不是您的数据重复显示了三次,是您的数据源中有三条数据,您的函数调用了三次,每次传递的参数都不同,展现的效果也不同:
出现这个情况的原因是因为您使用的是表格组件进行展示,表格组件会根据绑定的数据集的数据量自动扩展,扩展的每一行都是一条数据;然后每一行都调用了咱们的函数,并把对应行的字段的值当做入参传到了脚本函数里面,就出现了您遇到的情况:
如果您只想让现实一次,那您可以用单独的文本框组件来显示,这样只会显示一次,但是返回的结果是根据第一条数据进行处理的结果:
问题描述:
脚本控制没两个数据换一行
解决方法:
您的脚本代码中并没有控制每两个换一行,您只需要做一个判断,每次增2之后,加一个换行符即可,下面是我修改后的代码:
Function ProcessData(a As String, b As String) As String
Dim arrA() As String
arrA = Split(a, ";")
Dim result As String
result = ""
' 遍历数组B中的每个元素
Dim i As Integer
i = 0
For Each itema As String In arrA
If itema = b Then
result = result & itema & "■"
Else
result = result & itema & "□"
End If
If i Mod 2 = 1 Then
result = result & vbCrLf ' 添加换行符
End If
i = i + 1
Next
' 去掉最后一个逗号
result = Left(result, Len(result))
' 返回结果
ProcessData = result
End Function实现效果如下:
Felix.Li 发表于 2023-10-10 14:04
问题描述:
脚本控制没两个数据换一行
但是出来的结果还是循环了三遍,和我的结果一样,且只是做了一个两个一行的操作。我想的是输出出来结果为
机械伤害■ 触电■
电弧灼伤■ 误送□ inroad 发表于 2023-10-10 14:20
但是出来的结果还是循环了三遍,和我的结果一样,且只是做了一个两个一行的操作。我想的是输出出来结果为 ...
楼主,请帮我分析应该怎么做。数据源就是顶楼帖子上的数据,你可以尝试用我的数据输出。我的入参是ProcessData("机械伤害;触电;电弧灼伤;误送",Fields!Field1.Value) inroad 发表于 2023-10-10 14:20
但是出来的结果还是循环了三遍,和我的结果一样,且只是做了一个两个一行的操作。我想的是输出出来结果为 ...
而不是出来三遍
机械伤害■ 触电□
电弧灼伤□ 误送□
机械伤害□ 触电■
电弧灼伤□ 误送□
机械伤害□ 触电□
电弧灼伤■ 误送□ inroad 发表于 2023-10-10 14:24
而不是出来三遍
机械伤害■ 触电□
电弧灼伤□ 误送□
您好,那应该是您的入参有问题了,我使用楼上版主的脚本,用您的入参进行测试,没有出现重复的情况,您看一下是不是您的入参有问题,
Eden.Sun 发表于 2023-10-10 15:45
您好,那应该是您的入参有问题了,我使用楼上版主的脚本,用您的入参进行测试,没有出现重复的情况,您 ...
老哥,你的入参就和我不一样吧。你可以看看我的入参,在4# inroad 发表于 2023-10-10 16:49
老哥,你的入参就和我不一样吧。你可以看看我的入参,在4#
方便的话,您提供一下您的报表文件和一份demo数据,我们本地试一下。我这边确实没有复现出来您的这种场景。
Eden.Sun 发表于 2023-10-10 18:01
方便的话,您提供一下您的报表文件和一份demo数据,我们本地试一下。我这边确实没有复现出来您的这种场景 ...
您好,我的deom可以看下
页:
[1]
2