数据校验-与数据库做对比

根据报表填写的卡号,与数据库做对比是否填写单元格L列

若填写的卡号,在数据库里面找到对应的数据有两条(大于一条)且其中一条的卡类为900时,则需要填写单元格L列;

若填写的卡号,在数据库里面找到对应的数据有一条,则不需要填写单元格L列

代码:

SELECT DISTINCT top 200

    a.cas_name as 姓名,

a.cas_ca_cd as 卡号,

a.cas_card_cat as 卡类,

b.typ_name as 银行

FROM 

    bank_case a 

JOIN type_list b ON a.cas_typ_bid = b.typ_id

WHERE b.typ_name = '广发银行'

屏幕截图 2022-06-17 091451.png

FineReport lose 发布于 2022-6-16 14:27 (编辑于 2022-6-17 09:17)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-6-16 14:33(编辑于 2022-6-16 17:26)

我简化一下:通过卡号在数据库中 能 查询到卡类是900的就需要填写L;反之其他情况不管。对不?

---------------------

//卡号控件的编辑后事件

var a = this.getValue();

var location = this.options.location; //获取当前控件的位置

var cr = FR.cellStr2ColumnRow(location);

var col = cr.col; //列号

var ro = cr.row; //行号

var sql_="SELECT COUNT(*) [C] FROM (SELECT DISTINCT a.cas_name as 姓名,a.cas_ca_cd as 卡号,a.cas_card_cat as 卡类,b.typ_name as 银行 FROM bank_case a JOIN type_list b ON a.cas_typ_bid = b.typ_id WHERE a.cas_ca_cd='"+a+"') T"

var COUNT_=FR.remoteEvaluate('SQL("你的数据连接", "'+sql_+'", 1, 1)');//查总数

var sql_="SELECT TOP 1 '1' [CAT] FROM bank_case a JOIN type_list b ON a.cas_typ_bid = b.typ_id WHERE a.cas_ca_cd='"+a+"' AND a.cas_card_cat='900'"

var CAT_=FR.remoteEvaluate('SQL("你的数据连接", "'+sql_+'", 1, 1)');//查分类

var c= contentPane.getWidgetByCell(FR.columnRow2CellStr({col: col+2, row: ro}));//后面两列控件(假设卡号在J列,+2后就L列)

if(COUNT_>1&&CAT_=="1"){

c.setVisible(true);}//可用

contentPane.setCellValue(0, col + 1, ro, "T"); //假设K列是辅助列且为文本控件(可见不可用).辅助列赋值,以便填报校验使用

}

else {

c.setVisible(false);}//不可用

contentPane.setCellValue(0, col + 1, ro, ""); //假设K列是辅助列且为文本控件(可见不可用).辅助列赋值,以便填报校验使用

}

image.png

  • 1关注人数
  • 310浏览人数
  • 最后回答于:2022-6-17 09:17
    请选择关闭问题的原因
    确定 取消
    返回顶部