管理者软件
专业源于专注
www. myOIT. cn   
软件交流 管理软件 软件手册 »

    

 7  1/1   1  
作者
内容
xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  568
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#1»发布于2014-08-10 14:12

int func_before_oper() 

string sql,vouno,vouid 
 
//去日志表里查找相关数据,如果有就不能被保存 
vouno=gui_get_val("Edit_Voucher_No"); 
sql='select voucher_id from ebs_v_oper_log where voucher_no="'+vouno+'"'; 
db_run(sql); 
vouid=db_res_ext("voucher_id"); 
 
if(vouid=="") 

msg("正在保存数据"); 
can_save=1; 

else 

msg("已经保存了数据,不可重复保存"); 
can_save=0; 

 
return 1; 

 
这个脚本有个问题,就是当单据中有修改数据如果想保存也不能够保存,如果哪位高手能够解决单据被修改过能够保存而没有被修改过不能重复保留,请跟贴告之,不胜感激。


        于 2014-08-10 14:12 被 xwb514 修改




官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html
广州-英飞  [个人空间]


注册  2014-05-24
发贴数  7
精华贴  1
原创贴  1
来自  
状态  正常

级别  会员
#2»发布于2014-08-10 21:54

你这函数有个问题,can_save=0在int func_before_save()下才生效的,你的是在int func_before_oper() ,即使can_save=0 msg提示“已经保存了数据,不可重复保存”,但实际是已经保存的。 
你这个要求可以通过数据库来解决,下面是我的实现方法: 
在数据库里新建表 test 添加字段mm  
int func_show() 

db_run("update test set mm=0 where id=1") //单据显示即把mm设置为0,不允许保存 
  return 1; 
}; 
 
int cell_change() 

db_run("update test set mm=1 where id=1") //明细有改动把mm设置为1,允许保存 
  //change_col,change_col_id,change_row_id 
  return 1; 
}; 
 
int obj_change() 

db_run("update test set mm=1 where id=1") //表头有改动把mm设置为1,允许保存 
  //change_obj 
  return 1; 
}; 
 
int init_row() 

db_run("update test set mm=1 where id=1") //明细有添加把mm设置为1,允许保存 
  return 1; 
}; 
 
 
 
int func_before_save() 

string sql,vouno,vouid,test  //test测试用 
  
//去日志表里查找相关数据,如果有就不能被保存  
vouno=gui_get_val("Edit_Voucher_No");  
sql='select voucher_id from ebs_v_oper_log where voucher_no="'+vouno+'"';  
db_run(sql);  
vouid=db_res_ext("voucher_id");  
  
if(vouid=="")  
{  
msg("正在保存数据");  
can_save=1;  
}  
else  
{  
db_run("select mm from test") 
test=db_res("mm") 
if(test==0)   //假如mm=0才执行下面的can_save=0 

msg("已经保存了数据,不可重复保存");  
can_save=0;  

}  
  
  return 1; 
}; 
int func_after_save() 

db_run("update test set mm=0 where id=1")//保存完毕后重新设置mm为0 
  return 1; 
};


        于 2014-08-10 21:54 被 广州-英飞 修改


xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  568
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#3»发布于2014-08-10 22:59

感谢英飞的帮助。我想到了另一个办法,当然这个办法也是在英飞的提醒下得到的。 
1,创建一个表格自定义明细,命名为:item_change。这个明细就是起记录表格变动作用,是个中间数据,可以隐藏;它只有两个值1和0。为了防止误操作,在脚本中将其设为只读。 
 
2,在几个可能影响表格变动的之处,将其值预设为1,当为1时数据允许保存。 
这几个函数是:cell_change--明细修改时触发和init_row--新增一行明细时触发。其他有可能触发的函数也这样处理。 
 
具体脚本如下: 
 
int create_voucher() 

grid_set_col_width("MG_Item","item_change",0); 
grid_mark_readonly("MG_Item","item_change"); 
//隐藏和只读 
 
return 1; 

 
int cell_change() 

grid_set_V("MG_Item","item_change",grid_cur_row("MG_Item"),1); 
  //change_col,change_col_id,change_row_id 
  return 1; 
}; 
 
int init_row() 

grid_set_V("MG_Item","item_change",grid_cur_row("MG_Item"),1); 
 
  return 1; 
}; 
 
int fune_before_save() 

int i,j,k,itemchange; 
 
 for(j=1;j<i;j++) 
  { 
   itemchange=grid_get_v("MG_Item","item_change",j); 
   if(itemchange==1) 
    { 
     msg("可以保存"); 
     can_save=1; 
     for(k=j;k<i;k++) 
       grid_set_v("MG_Item","item_change",k,0); //将余下的全部置为0 
     break;//这句很关键,就是只要有一个记录值是1就可以保存 
     } 
   else 
     { 
    msg("不可以保存"); 
    can_save=0; 
     } 
  }; 
}


        于 2014-08-10 22:59 被 xwb514 修改




官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html
afoo  [个人空间]
QQ名  常德-ZEN


注册  2010-04-08
发贴数  204
精华贴  6
原创贴  6
来自  常德-ZEN
状态  正常

级别  会员
#4»发布于2014-08-11 08:50

浪哥,用这个旨在减少数据存储频次么?






官方认证第三方服务团队  蒋逸凡(常德-ZEN) QQ:50636277
服务介绍: http://www.onlyit.cn/user_home?user_id=13498
afoo  [个人空间]
QQ名  常德-ZEN


注册  2010-04-08
发贴数  204
精华贴  6
原创贴  6
来自  常德-ZEN
状态  正常

级别  会员
#5»发布于2015-04-29 10:41

浪哥,试试这个,不过还有待检验,我没仔细测试。 
 
int _cansave() 

  string cansave; 
  user_para_set('cansave','0'); 
}; 
 
int init_test() 

  return 1; 
}; 
 
int func_user_menu_1() 

  return 1; 
}; 
 
int func_user_menu_2() 

  return 1; 
}; 
 
int func_user_menu_3() 

  return 1; 
}; 
 
int func_user_menu_4() 

  return 1; 
}; 
 
int create_voucher() 

  _cansave(); 
  return 1; 
}; 
 
int func_show() 

  _cansave(); 
  return 1; 
}; 
 
int cell_change() 

  user_para_set('cansave','1'); 
  //change_col,change_col_id,change_row_id 
  return 1; 
}; 
 
int obj_change() 

  user_para_set('cansave','1'); 
  //change_obj 
  return 1; 
}; 
 
int init_row() 

  user_para_set('cansave','1'); 
  return 1; 
}; 
 
int adjust_row() 

  return 1; 
}; 
 
int func_before_print() 

  //can_print=1; 
  return 1; 
}; 
 
int func_before_save() 

//  msg(user_para_get('cansave')); 
  if(user_para_get('cansave')=='0') 
  { 
    can_save=0; 
  } 
  else if(user_para_get('cansave')=='1') 
  { 
    can_save=1;  
    _cansave(); 
  };    
  //can_save=1; 
  return 1; 
}; 
 
int func_before_check() 

  //can_check=1; 
  return 1; 
}; 
 
int func_after_save() 

  return 1; 
}; 
 
int func_after_check() 

  return 1; 
}; 
 
int func_after_print() 

  return 1; 
}; 
 
int func_before_oper() 

  //oper_type=save,check,check_r,finish,finish_r,delete,giveup,ask_check,ask_check_r; 
  //can_oper=1; 
  return 1; 
}; 
 
int func_after_oper() 

  //oper_type=save,check,check_r,finish,finish_r,delete,giveup,ask_check,ask_check_r; 
  return 1; 
}; 
 
int main() 

  return 1; 
};


        于 2015-04-29 10:41 被 afoo 修改




官方认证第三方服务团队  蒋逸凡(常德-ZEN) QQ:50636277
服务介绍: http://www.onlyit.cn/user_home?user_id=13498
xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  568
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#6»发布于2014-08-11 10:17

感谢afoo,我测试过你方法可行,执行效率也高。






官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html
southman  [个人空间]


注册  2013-12-06
发贴数  34
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#7»发布于2014-10-23 07:31

现在的日志不是所有单据都有,最好所有所有涉及数据录入的都加操作日志,包括人事资料等等。





 7  1/1   1  


登录后方可发贴


[ 电话: 0571-85462761 王先生 QQ: 124520435 加入软件QQ群 - 中国杭州 - 备案号码 浙ICP备19051128号]