数据逻辑删除的实现

编辑
  • 文档创建者:flyingsnake
  • 浏览次数:6629次
  • 编辑次数:7次
  • 最近更新:Kevin-s 于 2019-06-04
  • 1. 描述

    我们经常会碰到,数据需要备份留底,但是又不能让数据在业务界面展现的时候。

    这时,就可以用逻辑删除来解决。

    逻辑删除原理很简单。在数据库表中增加一列“状态”,之后通过更改这个状态列的值,控制数据可见与不可见。




    2. 方案思路

    我们用”状态“字段的值,来约束数据是否显示,只需要在查询数据的时候,增加上条件属性

    比如,原始查询语句是

    SELECT * FROM CUSTOMER 

    用状态约束后的查询语句则为:

    SELECT * FROM CUSTOMER  where 标记=”1“

    这样一来,数据集的展现结果就过滤掉了所有”标记“为0的数据。而数据依然在数据库中存在,进而实现逻辑删除。


    3. 示例

    我们用 FRDemo 中的 CUSTOMER 表做演示

    因为表中没有状态字段。我们使用“distinct”字段来作为“标记”。当distinct字段中的值为1时,认为是正常数据;当distinct 字段中的值为 0 时,认为是删除的数据。


    3.1 模板设计

    添加数据集 ds1:SQL 语句为SELECT * FROM CUSTOMER

    将字段拖拽到单元格中,如下图:



    3.2 增加删除/取消删除按钮

    添加两个按钮控件,按钮名称分别为删除按钮和取消删除按钮,如下图:



    (1)给删除按钮添加点击事件,参数中新增 col 和row,具体设置如下图:



    JS 代码如下:

    FR.Msg.confirm("提示","确定要删除数据吗?",function(value){ if(value){ contentPane.setCellValue(col,row,"0"); _g('${sessionID}').writeReport(); } else{ contentPane.setCellValue(col,row,"1"); _g().parameterCommit(); } })

    (2)给取消删除按钮添加点击事件,参数中新增 col 和 row,具体设置如下图:



    JS 代码如下:

    var v1=contentPane.getCellValue(0,col,row); FR.Msg.confirm("提示","确定要取消删除数据吗?",function(value){ if(value){ contentPane.setCellValue(col,row,"1"); _g('${sessionID}').writeReport(); } else{ contentPane.setCellValue(col,row,"0"); _g('${sessionID}').writeReport(); _g().parameterCommit(); } }) contentPane.setCellValue(col,row,"China");


    3.3 填报设置

    对状态列进行更新,点击模板>报表填报属性,进行填报设置如下图:



    3.4 设置形态


    为了让页面看起来更直观些。把状态列的值进行形态转换,显示为“正常”和“已经删除”。

    数据形态的公式为if($$$="1","正常","已经删除"),如下图:




    3.5 保存和预览

    进行填报预览,效果即如上所示

    附件列表


    主题: 二次开发
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]