关于手工录入【模板参数】的值,如何与数据集中的单元格的值关联或被约束!

关于手工录入【模板参数】的值,如何与数据集中的单元格的值关联或被约束!

1753064149257.png

1753064197062.png

FineReport 帆软用户JfeJExPS9U 发布于 2025-7-21 10:17
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
华莉星宸Lv7专家互助
发布于2025-7-21 10:19

你是要设置一个数据校验吧

用劵金额<=当前可用卷余额

  • 帆软用户JfeJExPS9U 帆软用户JfeJExPS9U(提问者) 老师,你好,要实现【劵金额<=当前可用卷余额】这个功能,对于取【当前可用卷余额】是不是要写个【自定义函数】才可能,实现这个效果呢?
    2025-07-21 12:16 
  • 华莉星宸 华莉星宸 回复 帆软用户JfeJExPS9U(提问者) 取【当前可用卷余额】直接从数据库取就行了啊,搞个数据集
    2025-07-21 12:44 
  • 帆软用户JfeJExPS9U 帆软用户JfeJExPS9U(提问者) 回复 华莉星宸 // 获取couponcash的值并赋值给变量a
    var a = _g().parameterEl.getWidgetByName("couponcash").getValue();
    // 获取Search控件
    var searchWidget = _g().parameterEl.getWidgetByName("Search");
    // 获取C2单元格的值
    var c2Value = _g().getCellValue("C2");

    // 判断a是否为有效数字
    var isNumber = !isNaN(parseFloat(a)) && isFinite(a);
    // 判断C2单元格的值是否为有效数字
    var isC2Number = !isNaN(parseFloat(c2Value)) && isFinite(c2Value);
    var isMultipleOfTwo;
    var isAValidAndNotGreaterThanC2;
    var shouldPreventSearch = false; // 标识是否需要阻止Search操作

    if (isNumber) {
    // 转换为数字类型进行计算
    a = Number(a);
    // 判断是否为2的整数倍
    isMultipleOfTwo = a % 2 === 0;
    var multipleMsg = "couponcash的值是" + a + "," + (isMultipleOfTwo ? "是" : "不是") + "2的整数倍";
    alert(multipleMsg);

    // 检查C2单元格值是否有效
    if (isC2Number) {
    c2Value = Number(c2Value);
    // 比较a与C2单元格的值
    if (a > c2Value) {
    alert("couponcash的值(" + a + ")大于C2单元格的值(" + c2Value + ")");
    isAValidAndNotGreaterThanC2 = false;
    shouldPreventSearch = true; // a大于C2值,需要阻止
    } else if (a < c2Value) {
    alert("couponcash的值(" + a + ")小于C2单元格的值(" + c2Value + ")");
    isAValidAndNotGreaterThanC2 = true;
    } else {
    alert("couponcash的值(" + a + ")等于C2单元格的值(" + c2Value + ")");
    isAValidAndNotGreaterThanC2 = true;
    }

    // 检查是否是2的整数倍
    if (!isMultipleOfTwo) {
    shouldPreventSearch = true; // 不是2的整数倍,需要阻止
    }
    } else {
    alert("C2单元格的值不是有效的数字:" + c2Value);
    shouldPreventSearch = true; // C2值无效,需要阻止
    }

    } else {
    alert("couponcash的值不是有效的数字:" + a);
    shouldPreventSearch = true; // a不是有效数字,需要阻止
    }

    // 根据条件判断是否需要禁止Search操作
    if (shouldPreventSearch) {
    // 通过parameterCommit()禁止Search执行
    _g().parameterCommit(false);
    alert('禁止刷新')
    // 同时禁用控件,提供视觉反馈
    //searchWidget.setEnable(false);
    } else {
    _g().parameterCommit();
    alert('执行刷新');
    }

    老师,我尝试在模板参数 中对 【查询】键 添加 【点击事件】,通过标志变量【shouldPreventSearch】来确认,是否执行 查询刷新操作 ,通过 【_g().parameterCommit(false);】为禁止执行,通过【_g().parameterCommit()】为正常执行!,但是在执行时,不管条件是否满足,报表都执行了提交刷新的操作,是用的语句有问题吗?
    2025-07-21 20:02 
最佳回答
0
runnerLv7资深互助
发布于2025-7-21 10:19(编辑于 2025-7-21 10:20)

你直接用下拉框,也可以模糊查询

https://help.fanruan.com/finereport/doc-view-5005.html 

最佳回答
0
snrtuemcLv8专家互助
发布于2025-7-21 10:20

这个只能是2的倍数,可以设置正则表达式实现

但是下面的限制不行,参数面板早于单元格,第一次没查询的时候,都获取不到单元格值,限制不了

  • 4关注人数
  • 36浏览人数
  • 最后回答于:2025-7-21 10:20
    请选择关闭问题的原因
    确定 取消
    返回顶部