跳转至

验证记录是否存在或者查询记录个数

本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a3vn7ph886

脚本说明

该脚本用于验证记录是否存在或查询记录个数。在MyApps平台中,可以通过SQL查询或使用countBySQL函数来检查记录是否存在或获取记录数量。

验证记录是否存在

方式1:使用countBySQL判断记录是否存在

(function(){
    var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '字段值'";
    var count = countBySQL(sql);

    if(count > 0){
        return true;  // 记录存在
    }else{
        return false;  // 记录不存在
    }
})();

方式2:使用findBySQL判断记录是否存在

(function(){
    var sql = "SELECT id FROM tlk_表单名 WHERE item_字段名 = '字段值'";
    var result = findBySQL(sql);

    if(result != null){
        return true;  // 记录存在
    }else{
        return false;  // 记录不存在
    }
})();

方式3:根据文档ID判断记录是否存在

(function(){
    var docId = "文档ID";
    var sql = "SELECT id FROM tlk_表单名 WHERE id = '" + docId + "'";
    var count = countBySQL(sql);

    return count > 0;
})();

方式4:根据多个条件判断记录是否存在

(function(){
    var field1 = "值1";
    var field2 = "值2";
    var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段1 = '" + field1 + "' AND item_字段2 = '" + field2 + "'";
    var count = countBySQL(sql);

    return count > 0;
})();

查询记录个数

方式1:使用countBySQL查询记录个数

(function(){
    var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '字段值'";
    var count = countBySQL(sql);

    return count;
})();

方式2:使用SQL COUNT查询记录个数

(function(){
    var sql = "SELECT COUNT(*) as count FROM tlk_表单名 WHERE item_字段名 = '字段值'";
    var result = findBySQL(sql);

    if(result != null){
        return result.getItemValueAsDouble("count");
    }

    return 0;
})();

方式3:查询所有记录个数

(function(){
    var domainId = getWebUser().getDomainid();
    var sql = "SELECT domainid FROM tlk_表单名 WHERE domainid = '" + domainId + "'";
    var count = countBySQL(sql);

    return count;
})();

方式4:根据条件查询记录个数

(function(){
    var condition = "条件值";
    var domainId = getWebUser().getDomainid();
    var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '" + condition + "' AND domainid = '" + domainId + "'";
    var count = countBySQL(sql);

    return count;
})();

扩展示例

示例1:验证记录是否存在并返回详细信息

(function(){
    var fieldValue = "字段值";
    var sql = "SELECT id, item_字段名 FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
    var result = findBySQL(sql);

    if(result != null){
        return "记录存在,ID: " + result.getId();
    }else{
        return "记录不存在";
    }
})();

示例2:查询记录个数并分类统计

(function(){
    var domainId = getWebUser().getDomainid();

    // 查询总数
    var totalSql = "SELECT domainid FROM tlk_表单名 WHERE domainid = '" + domainId + "'";
    var total = countBySQL(totalSql);

    // 查询状态为"已完成"的记录数
    var completedSql = "SELECT domainid FROM tlk_表单名 WHERE item_状态 = '已完成' AND domainid = '" + domainId + "'";
    var completed = countBySQL(completedSql);

    // 查询状态为"进行中"的记录数
    var processingSql = "SELECT domainid FROM tlk_表单名 WHERE item_状态 = '进行中' AND domainid = '" + domainId + "'";
    var processing = countBySQL(processingSql);

    var stats = {
        total: total,
        completed: completed,
        processing: processing
    };

    return JSON.stringify(stats);
})();

示例3:验证记录是否存在并执行操作

(function(){
    var docId = "文档ID";
    var sql = "SELECT domainid FROM tlk_表单名 WHERE id = '" + docId + "'";
    var count = countBySQL(sql);

    if(count > 0){
        // 记录存在,执行更新操作
        var updateSql = "UPDATE tlk_表单名 SET item_状态 = '已处理' WHERE id = '" + docId + "'";
        updateByDSName("数据源名称", updateSql);
        return "记录已更新";
    }else{
        // 记录不存在,执行创建操作
        return "记录不存在,需要创建";
    }
})();

示例4:查询记录个数并格式化输出

(function(){
    var fieldValue = "字段值";
    var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
    var count = countBySQL(sql);

    var output = "查询条件: " + fieldValue + "\n";
    output += "记录个数: " + count;

    if(count > 0){
        output += "\n状态: 存在记录";
    }else{
        output += "\n状态: 无记录";
    }

    return output;
})();

示例5:验证记录是否存在(多个条件)

(function(){
    var field1 = "值1";
    var field2 = "值2";
    var field3 = "值3";
    var domainId = getWebUser().getDomainid();

    var sql = "SELECT domainid FROM tlk_表单名 WHERE " +
              "item_字段1 = '" + field1 + "' AND " +
              "item_字段2 = '" + field2 + "' AND " +
              "item_字段3 = '" + field3 + "' AND " +
              "domainid = '" + domainId + "'";

    var count = countBySQL(sql);

    return count > 0;
})();

示例6:查询记录个数并判断范围

(function(){
    var fieldValue = "字段值";
    var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
    var count = countBySQL(sql);

    if(count == 0){
        return "无记录";
    }else if(count == 1){
        return "只有1条记录";
    }else if(count <= 10){
        return "有" + count + "条记录(少量)";
    }else{
        return "有" + count + "条记录(大量)";
    }
})();

示例7:验证记录是否存在并返回记录ID

(function(){
    var fieldValue = "字段值";
    var sql = "SELECT id FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
    var result = findBySQL(sql);

    if(result != null){
        return result.getId();  // 返回记录ID
    }else{
        return "";  // 记录不存在,返回空字符串
    }
})();

示例8:查询记录个数并用于业务判断

(function(){
    var userId = getWebUser().getId();
    var domainId = getWebUser().getDomainid();

    // 查询该用户创建的记录数
    var sql = "SELECT domainid FROM tlk_表单名 WHERE item_创建人 = '" + userId + "' AND domainid = '" + domainId + "'";
    var count = countBySQL(sql);

    // 根据记录数进行业务判断
    if(count == 0){
        return "您还没有创建任何记录";
    }else if(count < 10){
        return "您已创建" + count + "条记录,继续加油!";
    }else{
        return "您已创建" + count + "条记录,非常棒!";
    }
})();

示例9:验证记录是否存在(使用EXISTS)

(function(){
    var fieldValue = "字段值";
    var sql = "SELECT 1 FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
    var result = findBySQL(sql);

    return result != null;
})();

示例10:错误处理和日志记录

(function(){
    var fieldValue = "字段值";

    try{
        var sql = "SELECT domainid FROM tlk_表单名 WHERE item_字段名 = '" + fieldValue + "'";
        var count = countBySQL(sql);

        println("查询条件: " + fieldValue);
        println("记录个数: " + count);

        if(count > 0){
            println("记录存在");
            return true;
        }else{
            println("记录不存在");
            return false;
        }
    }catch(e){
        println("错误: " + e.getMessage());
        return false;
    }
})();

关键函数说明

  • countBySQL(sql): 执行SQL查询并返回记录个数
  • findBySQL(sql): 执行SQL查询并返回单条记录(如果存在)
  • queryBySQL(sql): 执行SQL查询并返回多条记录
  • updateByDSName(dsName, sql): 执行SQL更新语句
  • getWebUser().getDomainid(): 获取当前用户的域ID
  • getWebUser().getId(): 获取当前用户的ID

SQL查询说明

COUNT查询

SELECT COUNT(*) as count FROM tlk_表单名 WHERE 条件

EXISTS查询

SELECT 1 FROM tlk_表单名 WHERE 条件

判断记录是否存在

  • 使用 countBySQL() 返回个数,判断是否大于0
  • 使用 findBySQL() 返回记录,判断是否为null

注意事项

  • ⚠️ SQL注入: 构建SQL时注意防止SQL注入攻击,建议使用参数化查询
  • ⚠️ 性能优化: 如果只需要判断是否存在,使用 countBySQL()queryBySQL() 更高效
  • ⚠️ 域ID: 查询时建议加上域ID条件,避免跨域数据
  • ⚠️ 空值处理: 查询结果可能为空,需要判断
  • ⚠️ 字段名称: 注意表单字段在数据库中的命名规则(通常是 item_字段名
  • 使用 countBySQL() 可以快速获取记录个数
  • 使用 findBySQL() 可以判断记录是否存在并获取记录信息
  • 建议在查询时加上域ID条件,确保数据安全

使用场景

  • 验证数据是否重复
  • 检查记录是否存在
  • 统计记录数量
  • 数据去重判断
  • 业务规则验证

如需查看完整脚本代码,请访问源文档链接。