应用中心,提交UPDATE语句,为什么重复执行呢?
本帖最后由 PaulSpeaking 于 2020-3-7 13:38 编辑1. 定义触发器 `提取 -收据自动编号` , 保存触发
内容如下 :
a. 数据过滤: 本表单.开票方式 = "001" [这里的 单选框 是绑定了基础代码,001代表收据,002代表发票]
b. 数据填充: 收据当前编号(这个是文本框) , 填入值 是 : MYFUNC("setGetShouJv")
c. 处理引擎 : get_shoujv.fun
2. 在plugin\表单编号 的文件夹中, 创建get_shoujv.fun.php
<?php
date_default_timezone_set("PRC");
// 收据
function setGetShouJv($PLUGIN_UTILS){
$today = date('d');
// # 如果是本月的第一天
if($today == 01 ){
//操作数据库的第一步
$sql_Db = $PLUGIN_UTILS -> getDb();
//$onoff="on";
// 加载 SQL语句 , 收据编码清零
$sql_result = $sql_Db -> createCommand("UPDATE `TD_OA`.`fapiaoshoujv` SET `TD_OA`.`fapiaoshoujv`.`shoujv` = 0 WHERE `invoice_key` = 1");
// $onoff="off";
// 执行 SQL 语句
$sql_result ->execute();
}else{
// # 正常天数
//操作数据库的第一步
$sql_Db = $PLUGIN_UTILS -> getDb();
//加载 SQL语句 , 收据编码 +1
$sql_result = $sql_Db -> createCommand("UPDATE `TD_OA`.`fapiaoshoujv` SET `TD_OA`.`fapiaoshoujv`.`shoujv` = `TD_OA`.`fapiaoshoujv`.`shoujv` + 1 WHERE `invoice_key` = 1 ");
// 执行 SQL 语句
$sql_result ->execute();
}
// # 读取收据记录,回填到 控件 中
$sql_Db2 = $PLUGIN_UTILS -> getDb();
// 加载SQL 语句 , 获取收据的字段值
$sql_result2 = $sql_Db2 -> createCommand("SELECT `shoujv` FROM `TD_OA`.`fapiaoshoujv`");
// 执行 SQL 语句
$result = $sql_result2 ->queryOne();
// 返回到控件中
return "TKC" . "-".date("m")."_".$result['shoujv'];
}
3. 测试的时候, 在点击 单选框 `收据` ,再点击保存时候, 发现数据库,重复执行了 UPDATE 语句, 初始化 `shoujv` 字段为 0, 保存一次,数据库就变成了2,第二次操作,数据库就变成了 4 , 就是说,重复执行了UPDATE语句,而且SELECT语句每次显示的结果为 字段值-1 , 就是 第一次显示 1,第二次显示3.
4. 数据表 `fapiaoshoujv` 如下
5. 请问为什么会出现这样的问题呢?
您好,建议把上次数值取到表单,再获取表单数据加一,更新到数据表 本帖最后由 PaulSpeaking 于 2020-3-10 18:22 编辑
通达王帅龙 发表于 2020-3-10 14:21
您好,建议把上次数值取到表单,再获取表单数据加一,更新到数据表
您好,我按照您的方法试了,还是会重复加一, 是不是我的触发条件出问题呢?
我做的是 单选框, 基础代码,001代表收据,002代表发票
每次我点击收据时候,就重复执行2次代码.
谢谢.
补充一下,是不是我的 数据过滤 条件中出了问题呢?
通达王帅龙 发表于 2020-3-10 14:21
您好,建议把上次数值取到表单,再获取表单数据加一,更新到数据表
我现在的处理方式是,return 前 ,把记录数据/2 , 然后字段值从1开始.
实在找不到原因了.还望赐教. PaulSpeaking 发表于 2020-3-10 18:21
我现在的处理方式是,return 前 ,把记录数据/2 , 然后字段值从1开始.
实在找不到原因了.还望赐教. ...
您好,加我QQ:1537720035 通达王帅龙 发表于 2020-3-11 18:17
您好,加我QQ:1537720035
回填触发器定义一定要注意,成对出现,请参考阅读应用中心在线教程关于 回填触发器 方面的内容。
页:
[1]