返回列表 发帖

营业网络终端上的电子公告功能

目前移动公司都已普遍实现联网办理相关业务,对各营业点的业务更改通知、会议通知等都是通过电话或传真来实现。由于营业点数量众多,通过电话或传真方式通知的工作量就特别大,而且还可能碰到线路占用的问题。为了更 好地给营业点与移动公司提供更多的联系与沟通途径,减少人工工作量与误操作,我们在现有的营业网络终端上增加了电子公告功能,即当有新通知时,后台业务管理人员通过营业系统发布公告,营业点通过前台营业系统终端的电子公告栏就可以查询到所有的通知记录。以下就是在ORACLE数据库中,用SQL*Forms 3.0.16.12.8前台终端应用开发工具实现电子公告栏功能的详细过程。 首先建立记录电子公告的数据库表E_BBS如下: SQL> desc e_bbs; Name Type ------------------------------- -------- OFF_NO_HOMENUMBER(2)-- 发布电子公告的工号所在归属局 WK_NONUMBER(5)-- 发布电子公告的工号 MODI_DATEDATE -- 发布时间,索引字段 MEMO VARCHAR2(200)-- 发布内容 然后用SQL*Forms建立电子公告浏览模块E_BBS.INP,E_BBS.INP包含两个块BT2(Bulletin)和BN3(Button),BT2用来显示电子公告,BN3提供模块的界面出口,BT2和BN3及其所包含的字段主要属性如下: BT2ROWS_DISPLAYED = 4--BT2块显示4条电子公告记录  LINES_PER_ROW = 4 --每条电子公告记录占用屏幕4行 BT2的字段 BT2.FLAGCHAR(1)只读--用’*’显示来标识当前记录 BT2.OFF_NAMECHAR(10) 只读--发布电子公告的工号所在归属局名 BT2.WK_NAME CHAR(20) 只读--发布电子公告的工号姓名 BT2.MODI_DATE DATETIME 只读--发布电子公告时间,显示到秒  OUTPUT_MASK = yyyy/mm/dd hh24:mi:ss BT2.MEMOCHAR(200)只读--电子公告内容 DISPLAY_LENGTH = 76--显示长度76,超出部分通过左右键查询 以上字段中除BT2.MEMO外的其它字段占用一行,BT2.MEMO单独占用一行,每行之间有一空行,合计正好为4行。 BN3属性取默认值,模块的界面出口字段BN3.OK定义如下: BN3.OKchar(1)可写--‘Y’时退出模块,否则继续浏览 DEFAULT = Y-- 默认值为‘Y’ E_BBS.INP的浏览功能通过FORM级的触发器KEY-STARTUP实现,这样只要一进入模块立即见到的就是电子公告通知,KEY-STARTUP的定义如下: NAME = KEY-STARTUP TRIGGER_TYPE = V3 SHOW_KEY = OFF TEXT = <<< :system.message_level := 25; --提示信息显示在屏幕的第25行 declare cursor c_bbs is select * from e_bbs where off_no_home = 0 or off_no_home = :global.offhome order by modi_date desc ; --读取本归属局和地级管理的电子公告,按时间反序排列 begin go_block(';bt2';); clear_block; for c1 in c_bbs loop :bt2.modi_date:=c1.modi_date; --电子公告的发布时间、内容分别显示到BT2中 :bt2.memo:= c1.memo ; begin --从系统配置表syspz_wkno、syspz_xsj读取实际的工号姓名和归属局名到BT2中 select wk_name into :bt2.wk_name from syspz_wkno where wk_no = c1.wk_no ; select home_name into :bt2.off_name from syspz_xsj where off_no_home = c1.off_no_home ; exception when others then null; end; exit when :system.last_record=';true';; next_record; end loop; first_record; --屏幕光标定位到第一条记录 set_field(';bt2.flag';,updateable,attr_on); --BT2.FLAG定义为可写 :bt2.flag:=';*';; --BT2.FLAG赋以’*’,标识当前记录 set_field(';bt2.flag';,updateable,attr_off); --BT2.FLAG定义为只读 go_field(';bt2.memo';); exception when others then message(substr(sqlerrm,1,100)); --若有意外,显示出错信息 end; >>> BT2.MEMO字段上定义触发器KEY-UP和KEY-DOWN,用于通过键盘的向上键和向下键进行导航,KEY-UP的定义如下,KEY-DOWN的定义类似: NAME = KEY-UP TRIGGER_TYPE = V3 TEXT = <<< if :system.cursor_record=';1'; then --判断是否是第一条记录 set_field(';bt2.flag1';,updateable,attr_on); :bt2.flag1:=';*';; set_field(';bt2.flag1';,updateable,attr_off); message(';第一条信息!';) ; else set_field(';bt2.flag1';,updateable,attr_on); :bt2.flag1:=';';; up; --不是第一条记录时,向上移一条记录 :bt2.flag1:=';*';; set_field(';bt2.flag1';,updateable,attr_off); go_field(';bt2.memo';); end if; >>> 其它未列出的触发器还有两个FORM级的触发器KEY-F4,KEY-OTHERS,分别用于定义热键[F4]退出模块和屏蔽其它键操作,BT2的一个块级触发器KEY-NXTFLD,按回车后导航到BN3.OK,以及BN3.OK的一个字段级触发器KEY-NXTFLD,用于退出模块。这些触发器定义相对简单,这里从略。 由于各县归属局的实际业务管理不同,因此E_BBS.INP只显示地市级管理人员(局号off_no_home=0)和登录工号所在归属局(off_no_home=:global.offhome,:global.offhome是记录登录工号归属局的全局常量) 管理人员所发布的电子公告,并且最近的电子公告显示在屏幕的最上端。 营业前台人员除了在营业系统菜单中可以查询电子公告外,在营业系统登录的主程序中,当工号登录成功后,登录的主程序将调用该模块,自动显示电子公告记录。 发布电子公告的模块就是向E_BBS表插入记录的过程,这里从略。 对于后台微机采用DEVELOPER2000开发的营业系统,我们同样增加了电子公告栏,并且除了发布、浏览、登录后自动显示等功能外,还增加了利用ORACLE数据库表行识别号(ROWID)的删除功能。 电子公告功能的实现,改变了以往前后台人员的沟通方式,大大提高了工作效率。

返回列表 回复 发帖