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

上传人:l****6 文档编号:37597296 上传时间:2018-04-19 格式:DOC 页数:4 大小:31KB
返回 下载 相关 举报
基于PB6和ORACLE8开发“劳动信息管理系统”_第1页
第1页 / 共4页
基于PB6和ORACLE8开发“劳动信息管理系统”_第2页
第2页 / 共4页
基于PB6和ORACLE8开发“劳动信息管理系统”_第3页
第3页 / 共4页
基于PB6和ORACLE8开发“劳动信息管理系统”_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于PB6和ORACLE8开发“劳动信息管理系统”》由会员分享,可在线阅读,更多相关《基于PB6和ORACLE8开发“劳动信息管理系统”(4页珍藏版)》请在金锄头文库上搜索。

1、1基于 PB6 和 ORACLE8 开发“劳动信息管 理系统”摘要:本文介绍了用 POWERBUILDER6.0(以下简称 PB6)和 ORACLE8 开发“劳动信息管理系统”(以下简称“系统”)的方法和解决的技术性问题,并介绍一些开发经验。 主题词: PB6 ORACLE8 劳动信息 方法 技术 1 前言 “劳动信息管理系统”一般情况下都做成数字表格、文字描述、图形显示等形式。“数字表格”即具体的人员、工资数据的结构化描述;“文字描述”即用一段文字叙述或补充说明情况等;这里的“图”包括两类,即照片图(例如 BMP 位图等)和动态生成的指标描述图(如折线图等)。笔者在选择开发工具和数据库方面,

2、经过详细调研后,觉得用 PB6 和 ORACLE8 最为合适,现将开发和应用中的一些体会总结成文,供读者参考。 2 系统的运行环境 本系统在 CLIENT/SERVER 结构上运行,SERVER 平台为 UNIX,装有ORACLE8 数据库。CLIENT 端通过 HUB、ROUTER 与 SERVER 连接,CLIENT端的开发、运行平台是 WIN95/98/2000,前端开发工具为 PB6,总体网络协议为TCP/IP。 3 系统功能介绍 该系统包括劳动管理信息的维护和查询两部分,内容充实,立足于应用。表、文、图具全,对比图形由数据自动生成。同类型的数据查询采用了窗口继承的开发方法和动态数据窗

3、口,查询界面统一、清晰。文字部分存入 ORACLE 库的 LONG 字段中,用 MLE(多行编辑器)作为输入、输出的中间编辑、查询界面。一些原始资2料,如照片、背景图等做成了 BMP 图片,以 BLOB 数据方式存入 ORACLE 库中,或存至 NFS(网络文件系统)的“虚”盘上,查询时调入图形框(如 P_1)内。 4 技术难点及解决的方法 41 字符集的选择 如果字符集选择错误,会出现汉字显示成乱字符的现象,需要从注册表中选择正确的字符集,具体方法是:在 WIN95/98/2000 下运行注册表编辑程序 regedit.exe,选择 HKEY_LOCAL_MACHINE,再选择 SOFTWA

4、RE,再选择 ORACLE,然后选择 NLS_LANG(语言的国际支持),键入和服务器端相同的字符集。例如服务器端的字符集为 AMERICAN_AMERICAN.US7ASCII,在此也输入此项就行了。 42 PB6 和 ORACLE8 的连接 PB6 和 ORACLE8 的连接是一项很重要的内容,很多导致调用数据库失败的原因就出于此,根据不同的用户需求和硬件环境,可灵活选择客户端的接口软件,下面举例子来说明连接方法: 42.1 /通过 NET8 连接数据库,支持 32 位的数据访问,安装 ORACLE8 的 NET8 软件 /目前 PB6 支持到 ORACLE7.3 ,但是也支持 ORACL

5、E8,所以设置如下 SQLCA.DBMS =“o73“ /要访问的 ORACLE 用户名 SQLCA.LogID =“lz“ SQLCA.LogPass =“lzpwd“ SQLCA.UserID =“lz“ /通过 SQL*NET V2 和 ORACLE 库连接 SQLCA.ServerName=“net80“ Connect using sqlca; 42.2 /通过 SQL*NET V2 连接,可支持 16 位的数据访问,客户端可选择3ORACLE CDE 的 SQL*NET V2 SQLCA.DBMS =“o71“ /要访问的 ORACLE 用户名 SQLCA.LogID =“lz“

6、SQLCA.LogPass =“lzpwd“ SQLCA.UserID =“lz“ /通过 SQL*NET V2 和 ORACLE 库连接 SQLCA.ServerName=“snv2“ Connect using sqlca; 以上的 Script 语句描述了和 SERVER 的连接过程,也可以将上述 Script 语句存入文件(如 pb.ini)中,通过调用文件和数据库做连接。 若 PB6 和 ORACLE8 连接不通,可查一下 C:AUTOEXEC.BAT 里边的路径是否包含 c:orawin95bin(或相应的路径),如果没有此路径说明,PB6 和 ORACLE8 不能连通。 43 文

7、字类数据(文本)的入库和查询 文本入库和查询可采用 PB6 的 MLE(多行编辑器)作界面,编辑完成后存入ORACLE8 的 LONG 字段中,查询时从 LONG 字段中取出,放入 MLE 中查询,下边是一个例子: /文本的预处理(以去除文本文件中的回车换行符为例说明) /将文件读入 BLOB 型变量 text 中 fn=fileopen(txtname,streammode!) if fn -1 then fileread(fn,text) fileclose(fn) /将读入的数据流组合成字符串 article=string(text) s=len(article) for v=1 to

8、s t=pos(article,char(13)+char(10),v) if t0 then article=replace(article,t,2,“) 4else end if next mle_1.text=article /将处理后的文件 c:ldxx.txt 存盘,文件中的回车换行符已全部去掉 text1=blob(article) filname=“c:ldxx.txt“ fn=fileopen(filname,streammode!,write!,lockwrite!,replace!) if fn-1 then filewrite(fn,text1) fileclose(fn

9、) end if /文本入库 bigtext1=blob(mle_1.text) updateblob ldxxwj set bigtext=:bigtext1 where bh=:varbh and rq=:varrq using sqlca; commit; /从库中提出放入 MLE 中查询 selectblob bigtext into :bigtext1 from ldxxwj where bh=:varbh rq=:varrq using sqlca; mle_1.text=blob(bigtext1) /从库中重新生成文本文件 filename.txt 并存盘 select big

10、text into :varfile from ldxxwj where bh=:varbh and rq=:varrq using sqlca; fname=“c:filename.txt” fh=fileopen(fname,streammode!,write!,lockwrite!,replace!) if fh-1 then filewrite(fh,filen) fileclose(fh) end if 44 处理图象文件(大的二进制文件) 职工照片-图象文件(例如 BMP 位图文件)是二进制文件,将其以数据流方式存入 ORACLE8 的 LONG 字段中,查询时从 LONG 字段中

11、取出,放入图象框(如p_1)中查询,下边是一个例子: /将图象文件读入 BLOB 型变量 pict 中 fn=fileopen(picname,streammode!) if fn -1 then fileread(fn,pict) 5fileclose(fn) /将图象放入图象框 p_1 内查看 setpicture(p_1,pict) end if /将图象存入表 pic 的 LONG 字段 bmpt 中 updateblob pic set bmpt=:pict ; commit; 45 使用动态数据窗口 动态数据窗口指的是在程序的运行过程中通过 SQL 语句的改变动态地创建、修改数据窗

12、口的内容和表现形式,它多用在对同类型的对象的描述过程中, “劳动信息查询系统”的一些类似的内容可用动态数据窗口来编制,表现形式一致、构造界面统一、编程效率高,当然还有其它一些优点。下边是一个创建动态数据窗口并由此绘出趋势图的例子(动态数据窗口 dw_1,图形框 gr_1): dw_1.Create(SyntaxFromSQL(SQLCA,“SELECT sj,val01 FROM tab01 where ytmh=“+rowcha+“ ORDER BY sj “,“style=(type=grid)“,err) /执行上述语句会动态地产生类型为 grid 的数据窗口 dw_1。 /由下边这段程

13、序做出趋势图: /将数据调入数据窗口 dw_1.SetTransObject(sqlca) dw_1.Retrieve() rows = rowcount(dw_1) if rows0 then gr_1.SetRedraw(False) gr_1.reset(all!) gr_1.addseries(“dz1“) for i =1 to rows xis=mid(getitemstring(dw_1,i,1),3,2) yis=getitemnumber(dw_1,i,2) if isnull(yis) then yis=0 end if gr_1.adddata(1, yis,xis) n

14、ext 6gr_1.SetRedraw(True) sum=sum+sum1 st_1.text=string(sum) end if /图的类型可根据不同需要随意选择,如选择饼图、柱状、折线图等。 46 变量的定义和赋值要正确 一些整型数值尽量不要定义成 INT 类型,因为一旦超过 32767 就会出错,一定要定义成 LONG 类型;带小数的数据变量要定义成 DOUBLE 型,若定义成 LONG类型,会自动设去小数部分,出现精度错误。 PB6 中的日期类变量赋值方式比较固定,若日期变量定义错了,执行有关的 SQL语句时会出错,错误现象非常隐蔽,不容易调试,这是编程过程中的常见错误,在此特别强调一下。 举例如下: rqnum1=”2000-06-31” rqnum2=”2000-07-01” vardate1=string(date(em_1.text),“DD-MMM-YY“) vardate2=string(date(em_2.text),“DD-MMM-YY“)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号