找回密码
 立即注册

QQ登录

只需一步,快速开始

inroad

中级会员

70

主题

262

帖子

784

积分

中级会员

积分
784
inroad
中级会员   /  发表于:2023-10-10 10:06  /   查看:4836  /  回复:16
1金币
我有个json是这样的
    1. "wei_hai_shi_bie":[
    2. {
    3. "name":"机械伤害",
    4. "ancestors":[
    5. {
    6. "Id":"D1FE114C-2118-5E91-DA49-3A0B54DB0F94",
    7. "HierarchyId":"/31/",
    8. "HierarchyLevel":1,
    9. "ColorContent":"",
    10. "ColorSwitch":false,
    11. "name":"危害识别-南京诚志送电"
    12. }
    13. ],
    14. "id":"fdf53428-6039-b2c3-76d5-3a0b54db5920",
    15. "dictCode":"D1FE114C-2118-5E91-DA49-3A0B54DB0F94",
    16. "nodeCode":"ji_xie_shang_hai",
    17. "colorContent":"",
    18. "colorSwitch":false,
    19. "hierarchyId":"/31/1/",
    20. "TAGSORT":0
    21. },
    22. {
    23. "name":"触电",
    24. "ancestors":[
    25. {
    26. "Id":"D1FE114C-2118-5E91-DA49-3A0B54DB0F94",
    27. "HierarchyId":"/31/",
    28. "HierarchyLevel":1,
    29. "ColorContent":"",
    30. "ColorSwitch":false,
    31. "name":"危害识别-南京诚志送电"
    32. }
    33. ],
    34. "id":"0cf5622a-8563-9137-c706-3a0b54db70e6",
    35. "dictCode":"D1FE114C-2118-5E91-DA49-3A0B54DB0F94",
    36. "nodeCode":"chu_dian",
    37. "colorContent":"",
    38. "colorSwitch":false,
    39. "hierarchyId":"/31/2/",
    40. "TAGSORT":0
    41. }
    42. ]
    复制代码
    我要取出,拿$.['wei_hai_shi_bie']
  • .name。与”机械伤害,触电,电弧灼伤,误送“作比较。如果包含加方框,但是在软件中放入数据,会自动循环$.['wei_hai_shi_bie']
  • .name,导致我脚本拿出来的数据是这样的,我想的是两个一行比如。但是我现在出来的是这样的。代码如下
    1. Function ProcessData(a As String, b As String) As String
    2.         Dim arrA() As String
    3.         arrA = Split(a, ";")

    4.         Dim result As String
    5.         result = ""

    6.         ' 遍历数组B中的每个元素
    7.         Dim i As Integer
    8.         For Each itema As String In arrA
    9.                 If itema = b Then
    10.                         result = result & itema & "■  "
    11.                 Else
    12.                         result = result & itema & "□  "
    13.                 End If
    14.         Next

    15.         ' 去掉最后一个逗号
    16.         result = Left(result, Len(result))

    17.         ' 返回结果
    18.         ProcessData = result
    19. End Function
    复制代码


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

我们分析了您的文件,并不是您的数据重复显示了三次,是您的数据源中有三条数据,您的函数调用了三次,每次传递的参数都不同,展现的效果也不同: 出现这个情况的原因是因为您使用的是表格组件进行展示,表格组件会根据绑定的数据集的数据量自动扩展,扩展的每一行都是一条数据;然后每一行都调用了咱们的函数,并把对应行的字段的值当做入参传到了脚本函数里面,就出现了您遇到的情况: 如果您只想让现实一次,那您可 ...

16 个回复

倒序浏览
最佳答案
最佳答案
Eden.SunWyn认证
超级版主   /  发表于:2023-10-10 10:06:20
来自 11#
我们分析了您的文件,并不是您的数据重复显示了三次,是您的数据源中有三条数据,您的函数调用了三次,每次传递的参数都不同,展现的效果也不同:



出现这个情况的原因是因为您使用的是表格组件进行展示,表格组件会根据绑定的数据集的数据量自动扩展,扩展的每一行都是一条数据;然后每一行都调用了咱们的函数,并把对应行的字段的值当做入参传到了脚本函数里面,就出现了您遇到的情况:


如果您只想让现实一次,那您可以用单独的文本框组件来显示,这样只会显示一次,但是返回的结果是根据第一条数据进行处理的结果:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-10-10 14:04:00
2#
问题描述:

脚本控制没两个数据换一行

解决方法:
您的脚本代码中并没有控制每两个换一行,您只需要做一个判断,每次增2之后,加一个换行符即可,下面是我修改后的代码:
  1. Function ProcessData(a As String, b As String) As String
  2.         Dim arrA() As String
  3.         arrA = Split(a, ";")

  4.         Dim result As String
  5.         result = ""

  6.         ' 遍历数组B中的每个元素
  7.         Dim i As Integer
  8.         i = 0
  9.         For Each itema As String In arrA
  10.                 If itema = b Then
  11.                         result = result & itema & "■  "
  12.                 Else
  13.                         result = result & itema & "□  "
  14.                 End If
  15.                 If i Mod 2 = 1 Then
  16.                         result = result & vbCrLf ' 添加换行符
  17.                 End If
  18.                 i = i + 1
  19.         Next

  20.         ' 去掉最后一个逗号
  21.         result = Left(result, Len(result))

  22.         ' 返回结果
  23.         ProcessData = result
  24. End Function
复制代码
实现效果如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
inroad
中级会员   /  发表于:2023-10-10 14:20:25
3#
Felix.Li 发表于 2023-10-10 14:04
问题描述:

脚本控制没两个数据换一行

但是出来的结果还是循环了三遍,和我的结果一样,且只是做了一个两个一行的操作。我想的是输出出来结果为         
机械伤害■    触电■
电弧灼伤■    误送□
回复 使用道具 举报
inroad
中级会员   /  发表于:2023-10-10 14:21:59
4#
inroad 发表于 2023-10-10 14:20
但是出来的结果还是循环了三遍,和我的结果一样,且只是做了一个两个一行的操作。我想的是输出出来结果为 ...

楼主,请帮我分析应该怎么做。数据源就是顶楼帖子上的数据,你可以尝试用我的数据输出。我的入参是ProcessData("机械伤害;触电;电弧灼伤;误送",Fields!Field1.Value)
回复 使用道具 举报
inroad
中级会员   /  发表于:2023-10-10 14:24:49
5#
inroad 发表于 2023-10-10 14:20
但是出来的结果还是循环了三遍,和我的结果一样,且只是做了一个两个一行的操作。我想的是输出出来结果为 ...

而不是出来三遍
机械伤害■    触电□
电弧灼伤□    误送□

机械伤害□    触电■
电弧灼伤□    误送□

机械伤害□    触电□
电弧灼伤■    误送□
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2023-10-10 15:45:34
6#
inroad 发表于 2023-10-10 14:24
而不是出来三遍
机械伤害■    触电□
电弧灼伤□    误送□


您好,那应该是您的入参有问题了,我使用楼上版主的脚本,用您的入参进行测试,没有出现重复的情况,您看一下是不是您的入参有问题,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
inroad
中级会员   /  发表于:2023-10-10 16:49:24
7#
Eden.Sun 发表于 2023-10-10 15:45
您好,那应该是您的入参有问题了,我使用楼上版主的脚本,用您的入参进行测试,没有出现重复的情况,您 ...

老哥,你的入参就和我不一样吧。你可以看看我的入参,在4#
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2023-10-10 18:01:15
8#
inroad 发表于 2023-10-10 16:49
老哥,你的入参就和我不一样吧。你可以看看我的入参,在4#

方便的话,您提供一下您的报表文件和一份demo数据,我们本地试一下。我这边确实没有复现出来您的这种场景。
回复 使用道具 举报
inroad
中级会员   /  发表于:2023-10-11 09:22:22
9#
Eden.Sun 发表于 2023-10-10 18:01
方便的话,您提供一下您的报表文件和一份demo数据,我们本地试一下。我这边确实没有复现出来您的这种场景 ...

您好,我的deom可以看下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部