|
本帖最后由 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. 请问为什么会出现这样的问题呢?
|
-
|