永洪社区

标题: getData获取值报错 [打印本页]

作者: xixixiyao    时间: 2021-8-5 17:27
标题: getData获取值报错
请教
使用getData获取数据表,第二行第一列时,可以获取到值,但是预览和查看报表会报错,请问时什么原因呢
var a =  getData("表2",DATA)
debug(a.get(1,0))


报错信息
报告(预览: 招聘漏斗汇总-报表)-->装载时运行-->TypeError: Cannot call method "get" of null ([script]#3) at line 3



作者: _贝贝    时间: 2021-8-5 17:40
用相同脚本本地未复现,检查是否其他地方引用了这个脚本
作者: xixixiyao    时间: 2021-8-5 17:46
永洪tech-zxx 发表于 2021-8-5 17:40
用相同脚本本地未复现,检查是否其他地方引用了这个脚本

没有其他地方用这个脚本了呀,这两行注释掉的话,就不会报错了
作者: _贝贝    时间: 2021-8-5 18:09
xixixiyao 发表于 2021-8-5 17:46
没有其他地方用这个脚本了呀,这两行注释掉的话,就不会报错了

用一个exists来判断表格是否加载完  可能是数据还没加载就在获取了,所以是空
var data=getData('表1',DATA)
if(data.exists(1,1,true)){
//判断表格第一行有数据再赋值或者传参。
文本1.data=data.get(1,0)
}
作者: xixixiyao    时间: 2021-8-6 11:07
永洪tech-zxx 发表于 2021-8-5 18:09
用一个exists来判断表格是否加载完  可能是数据还没加载就在获取了,所以是空
var data=getData('表1',DA ...

试了您的方法,报错变成了这个报告(预览: 招聘漏斗汇总-报表)-->装载时运行-->TypeError: Cannot call method "exists" of null ([script]#3) at line 3


//获取表格中最大日期,赋值文本参数
var data =  getData("表2",DATA)
if(data.exists(1,1,true)){
//判断表格第一行有数据再赋值或者传参。
文本参数1.value=data.get(1,0)
}
debug(data.get(1,0))






作者: _贝贝    时间: 2021-8-6 11:35
xixixiyao 发表于 2021-8-6 11:07
试了您的方法,报错变成了这个报告(预览: 招聘漏斗汇总-报表)-->装载时运行-->TypeError: Cannot call me ...

变化时运行看一下呢
作者: xixixiyao    时间: 2021-8-6 11:50
永洪tech-zxx 发表于 2021-8-6 11:35
变化时运行看一下呢

报告(预览: 招聘漏斗汇总-报表)-->变化时运行-->TypeError: Cannot call method "get" of null ([script]#18) at line 18

还是不行,但是我debug那个位置的值,明明能拿到啊,效果是能实现的,但是就是一直报这个错误
作者: 美滋滋    时间: 2021-8-6 12:10
哎呀哎呀哎呀!!!终于看到有人和我遇到的问题是一样的了,关注此问题,希望能够得到实际有效的解决方案。
作者: 美滋滋    时间: 2021-8-6 15:44
哎呀,顶起来,等待解决方案
作者: 52v0    时间: 2021-8-6 15:46
放在组件加载时看看,不过放在组件加载有个缺点是 因为已经执行了数据获取 所以这里的代码涉及到获取数据的变动时 不会生效 会在下一次更新中生效
作者: 52v0    时间: 2021-8-6 15:52
另外如果只是想取最大日期/最小日期  建议单独用一个隐藏的参数组件 或者用和背景同色的文本组件来暂存
作者: _贝贝    时间: 2021-8-6 16:10
xixixiyao 发表于 2021-8-6 11:50
报告(预览: 招聘漏斗汇总-报表)-->变化时运行-->TypeError: Cannot call method "get" of null ([script] ...

加一个空值判断
if(data!=null&&data.exists(1,1,true)){
//判断表格第一行有数据再赋值或者传参。
文本参数1.value=data.get(1,0)
}
作者: 美滋滋    时间: 2021-8-6 16:44
加空值没有用,我试过
作者: _贝贝    时间: 2021-8-6 17:03
本帖最后由 永洪tech-zxx 于 2021-8-6 17:05 编辑
xixixiyao 发表于 2021-8-6 11:50
报告(预览: 招聘漏斗汇总-报表)-->变化时运行-->TypeError: Cannot call method "get" of null ([script] ...

对有一个规范写法 要加var rsize = data.size(-1)来获取
var arr = new Array()
var data = getViewData('表1')
var cnt = 16
var a = 0
data.exists(cnt,-1,true)
//var csize = data.csize()
var rsize = data.size(-1)
if(rsize<0)
{rsize = -rsize-1}
rsize = Math.min(cnt,rsize)
for(var i=1;i<rsize;i++)
{
arr = data.get(i,1)
a=a+arr
}



一般getDatagetViewGrid返回的都是DataGrid的对象,这个对象是支持流式处理的,所以访问指定的行数据之前,需要用exists方法判断是不是已经执行完了,并确保有这一行数据。
grid.exists(Integer.MAX_VALUE, c, bool); // 确保执行完,existsInteger.MAX_VALUE,检测指定行数的数据,当 c 的值为 -1 时,检测所有数据,booltrue时,需要检测的数据不存在时,则继续等待
var rsize = grid.size(-1); // 拿到可用的行数
l 若是修改组件视图值,尽量将脚本写在组件的脚本上,影响范围更小


作者: xixixiyao    时间: 2021-8-6 18:25
永洪tech-zxx 发表于 2021-8-6 17:03
对有一个规范写法 要加var rsize = data.size(-1)来获取
var arr = new Array()
var data = getViewData(' ...

发现问题了,是因为表格隐藏了,就会报错,如果不隐藏,就不会报错,这个能解决吗?
作者: 环环    时间: 2021-8-9 09:24
有些版本隐藏后确实会有这个问题,把隐藏的脚本换成设置宽度为0来做,一样可以达到隐藏的效果,组件.width=0




欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4