CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

急....数据审核的问题?????????????

楼主oceanaut(海阔天空)2002-05-11 16:31:19 在 PowerBuilder / 基础类 提问

是这样的,有两个数据库,一个是成果库,一个是当前库。成果库主要存放审核后的数据;而当前库主要用于当前用户录入数据的保存。  
          其中,当前库又分三个组,每个组包括2个以上的用户,那么每个用户都可以对同一条数据进行录入。最后,通过程序对这三个组录入的数据进行对比审核。如果审核通过,审核后的数据保存到成果库中;如果审核没有通过,提示录入用户对数据进行修改,对修改后的数据再进行审核,审核通过后入成果库。  
          希望各位同行提点好的设计思路和方法,谢谢!如果有现成的代码也行,再次万分感谢!  
          E-mail:oceanaut@163.com 问题点数:50、回复次数:7Top

1 楼oceanaut(海阔天空)回复于 2002-05-11 16:38:15 得分 0

大家都很忙吗?抽空儿看看我的这个问题好吗?谢谢!!!!!!!Top

2 楼mars884813(一帆)回复于 2002-05-11 16:48:38 得分 0

我这里的审核是这样做的:  
   
  就在原来的表上审核,还用原来的数据窗口。审核的时候把需要审的记录找出来,进入审核模式后将缓冲区中的该条数据清空,审核员录入一遍。保存的时候在代码中发现错误(与数据库中的原始值对比:dw.object.data[row,col]=   dw.object.data.Original[row,col]),错误发现后审核员确定到底是录入员错误还是审核员错误,根据审核员的回答在作处理。倘若录入员和审核员都出错,则需要重新审核。  
  Top

3 楼oceanaut(海阔天空)回复于 2002-05-11 16:58:35 得分 0

谢谢mars884813(一帆)能不能说的在具体一点儿,如果愿意,可以将你的源代码传给我看看。oceanaut@163.comTop

4 楼mars884813(一帆)回复于 2002-05-11 17:10:26 得分 0

这样吧,贴出来共享好了。  
  我来找找。Top

5 楼mars884813(一帆)回复于 2002-05-11 17:17:42 得分 50

自定义一个数据窗口,用到两个函数uf_clear()(清空),uf_check(审核)  
  //====================================================================  
  //   [PUBLIC]   Function   uf_check   在   uo_datawindow   inherited   from   datawindow  
  //--------------------------------------------------------------------  
  //   说明:对数据窗口中的数据根据原始值进行校验  
  //--------------------------------------------------------------------  
  // 参数1:[value]   boolean   mustkeyonly  
  // 说明:只校验关键列(与关键列校验对应)  
  //--------------------------------------------------------------------  
  //   返回: (INTEGER)   0不对,1正常  
  integer   li_yesno,li_i,li_row  
  integer   li_columns,li_rowcount  
  string     ls_name,ls_colname,ls_msg  
  integer   li_flag  
   
  li_rowcount=this.rowcount(   )  
  li_columns=integer(this.object.datawindow.column.count)  
  for   li_row=1   to   li_rowcount    
  for   li_i=1   to   li_columns  
  if     mustkeyonly   then   //关键列  
  if   not     lower(this.describe("#"+string(li_i)+".Criteria.Required"))="yes"   then   //需校验  
  continue;//不是关键列跳过  
  end   if    
  end   if    
      if   this.describe("#"+string(li_i)+".Key")="yes"   then//关键列不清空  
  continue;  
  end   if    
    //进行清空  
  THIS.uf_setnull(li_row,li_i)  
  next  
  next  
  return   1  
  Top

6 楼mars884813(一帆)回复于 2002-05-11 17:21:21 得分 0

//====================================================================  
  //   [PUBLIC]   Function   uf_check   在   uo_datawindow   inherited   from   datawindow  
  //--------------------------------------------------------------------  
  //   说明:对数据窗口中的数据根据原始值进行校验  
  //--------------------------------------------------------------------  
  // 参数1:[reference]   string   msg  
  // 说明:提示信息  
  // 参数1:[value]   boolean   mustkeyonly  
  // 说明:只校验关键列(与关键列校验对应)  
  //--------------------------------------------------------------------    
  //   返回: (INTEGER)   1正常,0操作错,-1审核  
  //变更日志:改成操作员错可跳过  
  //                 :加入对增加和删除的校验  
  integer   li_yesno,li_i,li_row,j  
  integer   li_columns,li_rowcount  
  string     ls_name,ls_colname,ls_msg,ls_msg1  
  integer   li_flag    
  uo_xnkh   luo_xn  
  if   pos(is_query[1,1],'deleted'   )=0   then   //未检查过  
  for   j=1   to   this.deletedcount(   )  
  //得到DELETE语句  
  if   this.GetItemStatus(   j,   0,delete!)=notmodified!   or     this.GetItemStatus(   j,   0,delete!)=datamodified!   then    
  if   this.tag<>''   then    
  ls_msg=this.tag+'   '  
  end   if    
  ls_msg=ls_msg+'   数据被删除,'  
  ls_msg1=ls_msg+'~r~n请确认是否是操作员错误?'  
  li_flag=messagebox('信息提示',ls_msg1,Exclamation!,   yesno!,   2)  
  if   li_flag=1   then    
  //操作员错应另做处理,在函数外取录入员进行操作(原值错,确认新值),并将错误信息返回  
  msg=ls_msg  
  is_query[1,1]=is_query[1,1]+'deleted'    
  return   0  
  else  
  //审核错,确认老值  
  this.object.data[li_row,li_i]=   this.object.data.Original[li_row,li_i]  
  //审核错则记录审核员效能  
  //操作错效能定为45  
  //登记效能记录  
  luo_xn.uf_xnjl_add(45,gi_emp_id,gi_emp_id,ls_msg)  
  //增加月考核表(只增加一个总量)  
  luo_xn.uf_xnkh_add(string(gdt_cur_date,'yyyy.mm'),45,gi_emp_id,1)  
  return   -1  
  end   if    
  end   if    
  next  
  end   if    
   
   
   
  li_flag=1  
  li_rowcount=this.rowcount(   )  
  li_columns=integer(this.object.datawindow.column.count)  
  for   li_row=1   to   li_rowcount  
  for   li_i=1   to   li_columns  
  if     mustkeyonly   then   //关键列  
  if   not     lower(this.describe("#"+string(li_i)+".Criteria.Required"))="yes"   then   //需校验  
  continue;//不是关键列跳过  
  end   if    
  end   if    
    //进行校验  
  if   TRIM(STRING(this.object.data.Original[li_row,li_i]))<>TRIM(STRING(this.object.data[li_row,li_i]))   then  
  ls_colname=this.describe("#"+string(li_i)+".name")  
  if   li_row<=upperbound   (is_query,1)   then   //判断是否作过已记录标志  
  if   pos(is_query[li_row,li_i],'checked')>=1   then    
  continue;  
  end   if    
  end   if    
  if   this.tag<>''   then    
  ls_msg=this.tag+'   '  
  end   if    
  ls_msg=ls_msg+'第'+string(li_row)+'行:['+this.describe(ls_colname+"_t.text")+"]数据审核时数据不对!"  
  ls_msg=ls_msg+'~r~n原值:'+string(this.object.data.Original[li_row,li_i])  
  ls_msg=ls_msg+'~r~n审核:'+string(this.object.data[li_row,li_i])  
  ls_msg1=ls_msg+'~r~n请确认是否是操作员错误?'  
  li_flag=messagebox('信息提示',ls_msg1,Exclamation!,   yesno!,   2)  
  if   li_flag=1   then    
  //操作员错应另做处理,在函数外取录入员进行操作(原值错,确认新值),并将错误信息返回  
  msg=ls_msg  
  if   li_row<=upperbound   (is_query,1)   then   //作标志位记录该项目已标志过  
    is_query[li_row,li_i]=is_query[li_row,li_i]+'checked'    
  end   if    
  return   0  
  else  
  //审核错,确认老值  
  this.object.data[li_row,li_i]=   this.object.data.Original[li_row,li_i]  
  //审核错则记录审核员效能  
  //操作错效能定为45  
  //登记效能记录  
  luo_xn.uf_xnjl_add(45,gi_emp_id,gi_emp_id,ls_msg)  
  //增加月考核表(只增加一个总量)  
  luo_xn.uf_xnkh_add(string(gdt_cur_date,'yyyy.mm'),45,gi_emp_id,1)  
  return   -1  
  end   if    
  end   if  
  next  
  next  
  return   1  
   
  问题是在处理审核多条记录的时候(比如少录入或多录入了一条)的时候,上述方法没有很好的解决。特别是审核的时候多录入一条的情况现在还无法处理。有劳你给想想办法。Top

7 楼oceanaut(海阔天空)回复于 2002-05-11 17:22:37 得分 0

谢谢!  
          但不知道,怎样设计这样的程序比较合理。因为牵扯到2个数据库。最好能给出一个设计方案。  
          这个问题要到5月15日上交。先写了。Top

相关问题

  • 急....数据审核
  • 急!!!!!数据的对比审核问题
  • 在此急需求助《数据审核程序》.......
  • 求存储过程,关于办证数据审核的。
  • 数据库!!!!!急……
  • 请问一个好的数据库的审核标准是什么
  • 审核流程的数据库结构怎样设计比较好?
  • 并发问题:多用户同时在线审核数据时,怎样处理?
  • 关于用户的审核问题:怎么实现点击一下审核按钮,DATAGRID里显示的是已审核,数据库里的值由2变为1,而开始DATAGRID里的显示的是未审核?
  • 急救Oracle数据.

关键词

  • 数据
  • 录入
  • 函数
  • 效能
  • 审核
  • li
  • ls
  • 校验
  • msg
  • mustkeyonly

得分解答快速导航

  • 帖主:oceanaut
  • mars884813

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo