基于PB6和ORACLE8开发“劳动信息管理系统”

时间: 2007-01-30 栏目: 电子信息工程论文

  基于PB6和ORACLE8开发“劳动信息管理系统”  
  
  刘茂忠(mzliu99#hotmail.com)
  
  
  摘要:本文介绍了用POWERBUILDER6.0(以下简称PB6)和ORACLE8开发“劳动信息管理系统”(以下简称“系统”)的方法和解决的技术性问题,并介绍一些开发经验。
  
  主题词:PB6ORACLE8劳动信息方法技术
  
  1前言
  
  “劳动信息管理系统”一般情况下都做成数字表格、文字描述、图形显示等形式。“数字表格”即具体的人员、工资数据的结构化描述;“文字描述”即用一段文字叙述或补充说明情况等;这里的“图”包括两类,即照片图(例如BMP位图等)和动态生成的指标描述图(如折线图等)。笔者在选择开发工具和数据库方面,经过详细调研后,觉得用PB6和ORACLE8最为合适,现将开发和应用中的一些体会总结成文,供读者参考。
  
  2
  
  
  
  系统的运行环境
  
  本系统在CLIENT/SERVER结构上运行,SERVER平台为UNIX,装有ORACLE8数据库。CLIENT端通过HUB、ROUTER与SERVER连接,CLIENT端的开发、运行平台是WIN95/98/2000,前端开发工具为PB6,总体网络协议为TCP/IP。
  
  3系统功能介绍
  
  该系统包括劳动管理信息的维护和查询两部分,内容充实,立足于应用。表、文、图具全,对比图形由数据自动生成。同类型的数据查询采用了窗口继承的开发方法和动态数据窗口,查询界面统一、清晰。文字部分存入ORACLE库的LONG字段中,用MLE(多行编辑器)作为输入、输出的中间编辑、查询界面。一些原始资料,如照片、背景图等做成了BMP图片,以BLOB数据方式存入ORACLE库中,或存至NFS(网络文件系统)的“虚”盘上,查询时调入图形框(如P_1)内。
  
  4技术难点及解决的方法
  
  4.1字符集的选择
  
  如果字符集选择错误,会出现汉字显示成乱字符的现象,需要从注册表中选择正确的字符集,具体方法是:在WIN95/98/2000下运行注册表编辑程序regedit.exe,选择HKEY_LOCAL_MACHINE,再选择SOFTWARE,再选择ORACLE,然后选择NLS_LANG(语言的国际支持),键入和服务器端相同的字符集。例如服务器端的字符集为AMERICAN_AMERICAN.US7ASCII,在此也输入此项就行了。
  
  
  
  
  4.2PB6和ORACLE8的连接
  
  PB6和ORACLE8的连接是一项很重要的内容,很多导致调用数据库失败的原因就出于此,根据不同的用户需求和硬件环境,可灵活选择客户端的接口软件,下面举例子来说明连接方法:
  
  4.2.1//通过NET8连接数据库,支持32位的数据访问,安装ORACLE8的NET8软件
  
  //目前PB6支持到ORACLE7.3,但是也支持ORACLE8,所以设置如下
  
  SQLCA.DBMS
  
  
  
  ="o73"
  
  //要访问的ORACLE用户名
  
  SQLCA.LogID="lz"
  
  SQLCA.LogPass="lzpwd"
  
  SQLCA.UserID="lz"
  
  
  
  
  //通过SQL*NETV2和ORACLE库连接
  
  SQLCA.ServerName="@net80"
  
  Connectusingsqlca;
  
  4.2.2//通过SQL*NETV2连接,可支持16位的数据访问,客户端可选择ORACLECDE的SQL*NETV2
  
  
  
  
  SQLCA.DBMS="o71"
  
  //要访问的ORACLE用户名
  
  SQLCA.LogID="lz"
  
  SQLCA.LogPass="lzpwd"
  
  SQLCA.UserID="lz"
  
  
  
  
  //通过SQL*NETV2和ORACLE库连接
  
  SQLCA.ServerName="@snv2"
  
  Connectusingsqlca;
  
  以上的Script语句描述了和SERVER的连接过程,也可以将上述Script语句存入文件(如pb.ini)中,通过调用文件和数据库做连接。
  
  
  
  
  若PB6和ORACLE8连接不通,可查一下C:\AUTOEXEC.BAT里边的路径是否包含c:\orawin95\bin(或相应的路径),如果没有此路径说明,PB6和ORACLE8不能连通。
  
  4.3文字类数据(文本)的入库和查询
  
  文本入库和查询可采用PB6的MLE(多行编辑器)作界面,编辑完成后存入ORACLE8的LONG字段中,查询时从LONG字段中取出,放入MLE中查询,下边是一个例子:
  
  //文本的预处理(以去除文本文件中的回车换行符为例说明)
  
  //将文件读入BLOB型变量text中fn=fileopen(txtname,streammode!)
  
  iffn<>-1then
  
  fileread(fn,text)
  
  fileclose(fn)
  
  //将读入的数据流组合成字符串
  
  article=string(text)
  
  
  
  
  s=len(article)
  
  forv=1tos
  
  t=pos(article,char(13)+char(10),v)
  
  ift>0then
  
  article=replace(article,t,2,"")
  
  else
  
  endif
  
  next
  
  mle_1.text=article
  
  //将处理后的文件c:\ldxx.txt存盘,文件中的回车换行符已全部去掉
  
  text1=blob(article)
  
  filname="c:\ldxx.txt"