Database 版 (精华区)
发信人: pine.bbs@sun20.nuaa.edu.cn (杆杆), 信区: cndatabase
标 题: [转载] 用PowerBuilder 4.0和Oracle 7.2 开发"文件管理系统.
发信站: nuaabbs (Fri Apr 17 23:56:33 1998)
转信站: Lilac!ustcnews!nuaabbs
【 以下文字转载自 Program 讨论区 】
【 原文由 pipishi.bbs@bbs.nju.edu.cn 所发表 】
市面上类似"文件管理系统"的软件很多,但真正使用户比较满意的
并不多见。要想满足用户的要求,只有自己来做开发工作,而这方面工
作难度较大,一方面要求开发工具有较强的文字处理能力,另一方面需
要选择适当的、性能优越的数据库,还要有丰富的开发经验。笔者在
作了大量的分析之后,决定用PowerBulder4.0作开发工具,数据库用Or
acle7.2,开发"文件管理系统"。现将一些体会总结成文,供同行们参
考。
系统概述
本系统采用了当今流行的Client/Server结构,Server端为UNIX操
作系统和Oracle7.2数据库,前端开发平台是Windows 3.1或Windows95
,网络协议是TCP/IP。主服务器为Alpha8200 ,Client端可以用HUB、R
outer和远程终端,通过FTP、SQL*NET V1 TCP/IP(或SQL*NET V2)或NF
S直接从LAN和WAN上读取和处理文件。该"文件管理系统"包括文件维
护和文件查询两部分。
"文件维护部分"包括文件的录入、分发和其它日常维护工作,全
文录入用PowerBuilder 4.0的MLE(多行编辑器)作为编辑器,编辑完成
后存入ORACLE的LONG字段中。"文件查询部分" 可实现按多项组合条
件进行查询,如年度或主题词等。文件的处理单和分类统计表可在系
统中调用Excel,通过数据链接后输出到屏幕或打印机。
技术难点及解决的方法
1.编制文件过滤器,提高维护效率。
因为该系统涉及的数据是文字而非一般性的数字,所以在格式编
排等方面做的工作要更加细致。比如说,Windows下的编辑器都有一个
共同点,只要遇到回车换行符,该行就立即断开。现在一些正规文件多
数用华光、方正、WPS等排版软件编辑而成,如果我们直接将其入库,
在调入MLE编辑器时就会出现七长八短、乱字连篇的现象,就是因为文
件中有回车换行符和一些排版符号等,必须用MLE重排才行,但这又很
浪费时间。有什么好的解决方案呢?回答是:在文件入Oracle库之前,
先自动做预处理工作———将"非法"字符过滤掉。如果"非法"字符是
回车换行符和"&",可运行下列程序将其去掉:
long i,j.s,f1,f2
blob text1,text2
int fp
string article
f1=fileopen("c:"wj.txt",streammode!)
fileread(f1,text)
fileclose(f1)
mle_1.text=string(text)
article=mle_1.text
s=len(article)
for i=1 to s
j=pos(article,char(13),i)
if j>0 then
article=replace(article,j,1,"")
else
end if
next
s=len(article)
for i=1 to s
j=pos(article,"&",i)
if j>0 then
article=replace(article,j,1,"")
else
end if
next
f2=fileopen("c:"wjnew.txt",streammode!,write!,lock-write
!,replace!)
if f2<>-1 then
filewrite(f2,text2)
fileclose(f2)
end if
mle_1.text=article
经过修改后,将文字入库:
text2=blob(mle_1.text)
insert into wj_tab(字段名)values(字段值)using sqlca;
commit;
updateblob wj_tab set text=:text2 where <条件> using sql
ca;
commit;
2.采取加密措施,实现按权限查询。
对用户来说,查阅文件是有权限的,这是个常识性的问题。在进入
"文件查询"系统时,需正确地键入密码,用户只能查到"发给他的文件"
。面对同一台微机,谁能正确地键入密码,谁就能做查询,但只能查到"
自己的"文件,达到了保密要求。
3.从文中检索关键词,帮助理解全文。
可用下列程序实现(仅举一个例子):
fn=fileopen(named,streammode!)
if fn>0 then
fileread(fn,text1)
fileclose(fn)
mle_1.text=string(text1)
article=mle_1.text
j=pos(article,"编号")
if j>0 then
bb=mid(article,j+5,5)
sle_1.text=bb
bh1=long(bb)
else
end if
j=pos(article,"种类")
if j>0 then
zz=mid(article,j+5,6)
sle_5.text=zz
else
end if
4.在用MLE编辑文字时,出现光标错位的现象,调用"中文之星"字
库或不用"粗线条"字体,可解决此类问题。
5.在系统运行过程中,出现"缺少一些DLL库函数"的错误提示,解
决此类问题的方法是:将功能相近的库函数复制成"缺少的库函数"。
6.经 常使用窗口继承和动态数据窗口,减少了重复性劳动,提高
了编程效率。
开发工具的缺陷PowerBuilder4.0的多行编辑器MLE只能编辑小于
32K的文件,这就限制了对32K以上大文本文件的正常管理,对这些文件
的管理还要借助别的软件来弥补这个不足,这是开发工具的一大缺陷
。笔者很希望Power Soft公司能在这方面做些工作,解决这一问题。
开发工具的缺陷
PowerBuilder 4.0的多行编辑器MLE只能编辑小于32K的文件, 这
就限制了对32K以上的大文本文件的正常管理, 对这些文件的管理还
要借助别的软件来弥补这个不足, 这是开发工具的一大缺陷。笔者很
希望Power Soft公司能在这方面做些工作, 解决这一问题。
--
※ 来源:.南大小百合信息交换站 bbs.nju.edu.cn.[FROM: hsia.nju.edu.cn]
--
※ 转载:.Top Gun sun20.nuaa.edu.cn.[FROM: 202.119.71.141]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.157毫秒