填报同一个名称时,如何判断新增加的行数据开始时间要大于上一个项目的结束时间

表设计的主键是序号加项目,第一个规则是结束时间要大于开始时间;第二个是当同一个项目时,新增加的这个项目开始时间要大于原来这个项目的结束时间。

即序号1的这个A1结束时间是2号,新增加的这个也是项目A1,他的开始时间要大于2号,这个有没有办法判断呢?

image.png

FineReport vinny 发布于 2023-2-9 11:11
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
快乐星光Lv5中级互助
发布于2024-6-12 10:16(编辑于 2024-6-12 10:48)

      第一个需求可以参照文档:https://help.fanruan.com/finereport/doc-view-1197.html

      第二个需求也可以做,在开始时间列的日期控件做编辑结束事件,js里面用调用sql函数查询出项目列所填写项目的最后结束时间,然后和填写的开始时间对比,如果不符和要求弹出提示,并清空该控件。

     不过有一个条件,该填报表不能插入多行,只能单行填报保存。因为不好判断该页面新增同项目的最后结束时间。

参考编辑结束js:

var cell=this.options.location;

//获取当前控件所在单元格的编号

var cr=FR.cellStr2ColumnRow(cell);

//获取当前单元格的行列号

var ro=cr.row;

var co=cr.col;

var sdate=this.getValue();

var xmh=_g().getCellValue(co-1, ro);

var str='=sql("xxxDB","SELECT max(结束日期字段) from xxx表名称 where 项目号字段 =\''+ xmh+ \' group by 项目号字段';

var maxenddate=FR.remoteEvaluate(str);

if( sdate < maxenddate ){

FR.Msg.toast("开始日期小于该项目最后结束日期,请重新选择日期!");

this.setValue("");

}

   

  • 帆软用户L1lKsYIFvf 帆软用户L1lKsYIFvf js里面用调用sql函数查询出项目列所填写项目的最后结束时间,然后和填写的开始时间对比,如果不符和要求弹出提示,并清空该控件。这一步方便给个教程吗,感谢大佬
    2024-06-12 10:36 
  • 快乐星光 快乐星光 回复 帆软用户L1lKsYIFvf 仅作参考
    2024-06-12 10:47 
  • 帆软用户L1lKsYIFvf 帆软用户L1lKsYIFvf 感谢大佬,我去测试研究一下
    2024-06-12 10:50 
  • 快乐星光 快乐星光 回复 帆软用户L1lKsYIFvf 日期控件最好用yyyy-MM-dd格式,返回字符串模式,不然还得在js里面转换
    2024-06-12 10:50 
  • 快乐星光 快乐星光 回复 帆软用户L1lKsYIFvf max(结束日期字段) 也需要转换:max(CONVERT(varchar(50),结束日期字段,23))
    2024-06-12 10:53 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-2-9 11:17

1、https://help.fanruan.com/finereport/doc-view-566.html   --参考与数据库中数据对比校验(PS:以下图为例 查询日期大于B8的结果集为空即可)

2、

image.png

最佳回答
0
帆软用户L1lKsYIFvfLv2见习互助
发布于2024-6-12 09:50

刚好遇到同样的问题了,请问楼主解决了吗

最佳回答
0
孤陌Lv6资深互助
发布于2024-6-12 10:30

建议 项目分组 这样填写就循环判断一下就好了 不建议 项目分行填写

  • 4关注人数
  • 538浏览人数
  • 最后回答于:2024-6-12 10:48
    请选择关闭问题的原因
    确定 取消
    返回顶部