请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

18932441132

注册会员

7

主题

27

帖子

104

积分

注册会员

积分
104

圣诞拼拼乐

18932441132
注册会员   /  发表于:2021-2-23 18:59  /   查看:1578  /  回复:8
本帖最后由 18932441132 于 2021-2-23 19:02 编辑

spreadjs 报表里使用太多自定义的异步函数,需要向后端请求数据库数据
因为相互之间会引用其他单元格,所以一般对失败的异步请求需要返回"0"值或显示为""空字符串

希望整表计算后,如果有请求失败时,可以统一给出一个提示,需要显示出错的单元格,
想请问如何可以在异步函数里获取到触发函数的单元格位置.

image.png387171630.png


image.png172814635.png

如图中的G1 H1 I1 的位置信息
image.png777243957.png
image.png83083800.png

8 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-2-24 14:46:13
推荐
看了您的需求,我认为没有必要用异步函数,正常的普通函数就能满足您的需求。写了个简单demo您可以参考一下

demo.zip

838.19 KB, 下载次数: 6

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-2-24 08:58:06
沙发
您可以尝试使用IFERROR函数,可以帮助您捕获和处理公式中的错误。这是该函数的介绍
https://support.microsoft.com/zh ... 8-8bb6-63f3e417f611
回复 使用道具 举报
18932441132
注册会员   /  发表于:2021-2-24 09:51:19
板凳
DerrickJiao 发表于 2021-2-24 08:58
您可以尝试使用IFERROR函数,可以帮助您捕获和处理公式中的错误。这是该函数的介绍
https://support.micro ...

一般是写好的整张报表公式, 有很多  "= 获取上月报表产量 + 获取数据库数据"这种公式.一键计算
."获取上月/上年报表"这一类由于有的时候不一定有,所以只能返回0值,但有的时候是名称错误或其他原因,所以希望有个提示能显示,值只能返回0一类的,所以不适合用iferror修改返回值

又因为报表这种公式太多,所以希望能具体显示哪个单元格公式出错
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-2-24 10:16:09
地板
看了您上面的说明,如果按您的方法弹出类似alert弹出框显示错误的单元格内容。这里有一个矛盾的地方,如果用异步函数,那么每个函数在运行完就会各自将结果push到表格上。这就有一个问题,假设G1,H1,I1的计算都有问题,那么G1自己计算完毕的时候结果就会push到表格,如果是以弹窗的形式那么就会有连续三个弹窗发出。但是alert这种弹窗的机制是阻断式的,弹窗没有关闭时会阻断后续代码进行,显然这么做是不合理的,那么如果要等到所有的公式计算完之后统一弹窗,那么为什么还要用异步函数呢?
回复 使用道具 举报
18932441132
注册会员   /  发表于:2021-2-24 10:41:11
5#
ClarkPan 发表于 2021-2-24 10:16
看了您上面的说明,如果按您的方法弹出类似alert弹出框显示错误的单元格内容。这里有一个矛盾的地方,如果 ...

数据来源是生产数据库,和以往的报表的文件,只能向服务端请求数据
如果不使用异步函数,就只能全丢给后端计算返回整个表格了
回复 使用道具 举报
18932441132
注册会员   /  发表于:2021-2-24 10:46:16
6#
ClarkPan 发表于 2021-2-24 10:16
看了您上面的说明,如果按您的方法弹出类似alert弹出框显示错误的单元格内容。这里有一个矛盾的地方,如果 ...

现在想法是在点击"计算"后,记录出错的异步公式,全表计算结束后,弹出提示.
想看看能不能显示出具体哪个单元格计算错误,方便业务人员核对和修改
回复 使用道具 举报
18932441132
注册会员   /  发表于:2021-2-24 16:09:04
8#
ClarkPan 发表于 2021-2-24 14:46
看了您的需求,我认为没有必要用异步函数,正常的普通函数就能满足您的需求。写了个简单demo您可以参考一下 ...

我不确定普通函数和异步函数是否是同样方式获取,所以开问题时针对异步函数提问.
谢谢你,demo是我要的
之前函数注册方法封装了,我没注意到参数列表里直接带了上下文.
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-2-24 17:20:29
9#
18932441132 发表于 2021-2-24 16:09
我不确定普通函数和异步函数是否是同样方式获取,所以开问题时针对异步函数提问.
谢谢你,demo是我要的
...

解决了就好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部