填报校验:校验上传的数据行数据是否相同。

具体描述:以10条数据为例,填报校验上传的10条数据,A、B、C、D列加起来是否相同。

这几列数据都一模一样则提示行数据重复。

FineReport 用户xASEW5095 发布于 2020-5-14 12:31
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
P.anyuLv4初级互助
发布于2020-5-14 12:57

你是需要提交一模一样的数据?那就不做主键,但是这样数据结构就不标准。并且你后期查询数据的时候会出现大量重复。建议加隐藏字段自增序号。

  • 用户xASEW5095 用户xASEW5095(提问者) 我是要把行数据一模一样的数据去掉,用户有时候数据多复制了一行,系统提示的英文她们说看不懂,要我做提示中文
    2020-05-14 13:25 
  • P.anyu P.anyu 回复 用户xASEW5095(提问者) 那就设置主键,提交的时候只会提交一条
    2020-05-14 17:39 
最佳回答
0
18328816101Lv5中级互助
发布于2020-5-14 13:36

abcd列加起来是否相同,这相当于联合主键,你把填报属性里的这四列都勾上主键就行了

最佳回答
0
luojian0323Lv7资深互助
发布于2020-5-14 13:45(编辑于 2020-5-14 15:45)

以我的模版为例,H3是一个拼接公式:CONCATENATE(D3, E3, F3, G3)

,然后给H3添加一个控件,比如命名为:cf

添加一个按钮,叫检查重复,给一个点击事件,代码如下:

var temp = "";
//var arr = {}
var arr = contentPane.getWidgetsByName("cf"); //获取扩展单选按钮组控件p1

if (arr[0] != undefined) {
	
	for (var i = 0; i < arr.length; i++) {
		temp = temp + arr[i].getValue() + ',';
	}} else {
		temp = arr.getValue()
	}
var arry=arr.sort();
for(var i=0;i<arry.length;i++){
    if (i>0&&arry[i].getValue()==arry[i-1].getValue()){
        alert("重复内容:"+arry[i].getValue());
    }
}

image.png

  • 用户xASEW5095 用户xASEW5095(提问者) 我也是使用的这个差不多额方法,就是达不到用户要求的告诉她具体哪几行重复了在单元格V3里做了个公式,CONCATENATE(A3,B3,C3,D3,E3,I3,K3,L3,M3,N3,O3,P3) 填报校验里弄了这个,COUNT(UNIQUEARRAY(V3[!0]))=COUNT(V3[!0]),你有没有更好的办法能实现用户这个需求
    2020-05-14 14:12 
  • luojian0323 luojian0323 回复 用户xASEW5095(提问者) 做出来了
    2020-05-14 15:30 
  • 4关注人数
  • 682浏览人数
  • 最后回答于:2020-5-14 15:45
    请选择关闭问题的原因
    确定 取消
    返回顶部