91精品人妻互换日韩精品久久影视|又粗又大的网站激情文学制服91|亚州A∨无码片中文字慕鲁丝片区|jizz中国无码91麻豆精品福利|午夜成人AA婷婷五月天精品|素人AV在线国产高清不卡片|尤物精品视频影院91日韩|亚洲精品18国产精品闷骚

您當(dāng)前位置:首頁 > 新聞頻道 > 技術(shù)動態(tài) > 正文
淺析PB6和ORACLE8開發(fā)“勞動信息管理系統(tǒng)”

摘要:本文介紹了用POWERBUILDER6.0(以下簡稱PB6)和ORACLE8開發(fā)“勞動信息管理系統(tǒng)”(以下簡稱“系統(tǒng)”)的方法和解決的技術(shù)性問題,并介紹一些開發(fā)經(jīng)驗。

主題詞: PB6  ORACLE8 勞動信息  方法  技術(shù)

1   前言

    “勞動信息管理系統(tǒng)”一般情況下都做成數(shù)字表格、文字描述、圖形顯示等形式!皵(shù)字表格”即具體的人員、工資數(shù)據(jù)的結(jié)構(gòu)化描述;“文字描述”即用一段文字?jǐn)⑹龌蜓a(bǔ)充說明情況等;這里的“圖”包括兩類,即照片圖(例如BMP位圖等)和動態(tài)生成的指標(biāo)描述圖(如折線圖等)。筆者在選擇開發(fā)工具和數(shù)據(jù)庫方面,經(jīng)過詳細(xì)調(diào)研后,覺得用PB6和ORACLE8最為合適,現(xiàn)將開發(fā)和應(yīng)用中的一些體會總結(jié)成文,供讀者參考。

2   系統(tǒng)的運行環(huán)境

    本系統(tǒng)在CLIENT/SERVER結(jié)構(gòu)上運行,SERVER平臺為UNIX,裝有ORACLE8數(shù)據(jù)庫。CLIENT端通過HUB、ROUTER與SERVER連接,CLIENT端的開發(fā)、運行平臺是WIN95/98/2000,前端開發(fā)工具為PB6,總體網(wǎng)絡(luò)協(xié)議為TCP/IP。

3   系統(tǒng)功能介紹

    該系統(tǒng)包括勞動管理信息的維護(hù)和查詢兩部分,內(nèi)容充實,立足于應(yīng)用。表、文、圖具全,對比圖形由數(shù)據(jù)自動生成。同類型的數(shù)據(jù)查詢采用了窗口繼承的開發(fā)方法和動態(tài)數(shù)據(jù)窗口,查詢界面統(tǒng)一、清晰。文字部分存入ORACLE庫的LONG字段中,用MLE(多行編輯器)作為輸入、輸出的中間編輯、查詢界面。一些原始資料,如照片、背景圖等做成了BMP圖片,以BLOB數(shù)據(jù)方式存入ORACLE庫中,或存至NFS(網(wǎng)絡(luò)文件系統(tǒng))的“虛”盤上,查詢時調(diào)入圖形框(如P_1)內(nèi)。

4   技術(shù)難點及解決的方法

4.1 字符集的選擇

    如果字符集選擇錯誤,會出現(xiàn)漢字顯示成亂字符的現(xiàn)象,需要從注冊表中選擇正確的字符集,具體方法是:在WIN95/98/2000下運行注冊表編輯程序regedit.exe,選擇HKEY_LOCAL_MACHINE,再選擇SOFTWARE,再選擇ORACLE,然后選擇NLS_LANG(語言的國際支持),鍵入和服務(wù)器端相同的字符集。例如服務(wù)器端的字符集為AMERICAN_AMERICAN.US7ASCII,在此也輸入此項就行了。

4.2 PB6和ORACLE8的連接

    PB6和ORACLE8的連接是一項很重要的內(nèi)容,很多導(dǎo)致調(diào)用數(shù)據(jù)庫失敗的原因就出于此,根據(jù)不同的用戶需求和硬件環(huán)境,可靈活選擇客戶端的接口軟件,下面舉例子來說明連接方法:

4.2.1  //通過NET8連接數(shù)據(jù)庫,支持32位的數(shù)據(jù)訪問,安裝ORACLE8 的NET8 軟件

 //目前PB6支持到ORACLE7.3 ,但是也支持ORACLE8,所以設(shè)置如下

SQLCA.DBMS       ="o73"

//要訪問的ORACLE用戶名

SQLCA.LogID      ="lz"

SQLCA.LogPass    ="lzpwd"

SQLCA.UserID     ="lz"

//通過SQL*NET V2和ORACLE庫連接

SQLCA.ServerName="@net80"  

Connect using sqlca;

4.2.2  //通過SQL*NET V2連接,可支持16位的數(shù)據(jù)訪問,客戶端可選擇ORACLE CDE的SQL*NET V2

SQLCA.DBMS       ="o71"

//要訪問的ORACLE用戶名

SQLCA.LogID      ="lz"

SQLCA.LogPass    ="lzpwd"

SQLCA.UserID     ="lz"

//通過SQL*NET V2和ORACLE庫連接

SQLCA.ServerName="@snv2"  

Connect using sqlca;

    以上的Script語句描述了和SERVER的連接過程,也可以將上述Script語句存入文件(如pb.ini)中,通過調(diào)用文件和數(shù)據(jù)庫做連接。

    若PB6和ORACLE8連接不通,可查一下C:AUTOEXEC.BAT里邊的路徑是否包含c:orawin95bin(或相應(yīng)的路徑),如果沒有此路徑說明,PB6和ORACLE8不能連通。

4.3 文字類數(shù)據(jù)(文本)的入庫和查詢

    文本入庫和查詢可采用PB6的MLE(多行編輯器)作界面,編輯完成后存入ORACLE8的LONG字段中,查詢時從LONG字段中取出,放入MLE中查詢,下邊是一個例子:

//文本的預(yù)處理(以去除文本文件中的回車換行符為例說明)

//將文件讀入BLOB型變量text中fn=fileopen(txtname,streammode!)

if fn<> -1 then

fileread(fn,text)

fileclose(fn)

//將讀入的數(shù)據(jù)流組合成字符串

article=string(text)

s=len(article)

for v=1 to s

t=pos(article,char(13)+char(10),v)

if t>0 then

article=replace(article,t,2,"")

else

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) 

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 bigtext 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

4.4  處理圖象文件(大的二進(jìn)制文件)

     職工照片-圖象文件(例如BMP位圖文件)是二進(jìn)制文件,將其以數(shù)據(jù)流方式存入ORACLE8的LONG字段中,查詢時從LONG字段中取出,放入圖象框(如p_1)中查詢,下邊是一個例子:

//將圖象文件讀入BLOB型變量pict中

fn=fileopen(picname,streammode!)

if fn<> -1 then

fileread(fn,pict)

fileclose(fn)

//將圖象放入圖象框p_1內(nèi)查看

setpicture(p_1,pict)

end if

//將圖象存入表pic 的LONG字段bmpt 中

updateblob pic set bmpt=:pict ;

commit;

4.5  使用動態(tài)數(shù)據(jù)窗口

    動態(tài)數(shù)據(jù)窗口指的是在程序的運行過程中通過SQL語句的改變動態(tài)地創(chuàng)建、修改數(shù)據(jù)窗口的內(nèi)容和表現(xiàn)形式,它多用在對同類型的對象的描述過程中,“勞動信息查詢系統(tǒng)”的一些類似的內(nèi)容可用動態(tài)數(shù)據(jù)窗口來編制,表現(xiàn)形式一致、構(gòu)造界面統(tǒng)一、編程效率高,當(dāng)然還有其它一些優(yōu)點。下邊是一個創(chuàng)建動態(tài)數(shù)據(jù)窗口并由此繪出趨勢圖的例子(動態(tài)數(shù)據(jù)窗口dw_1,圖形框gr_1):

dw_1.Create(SyntaxFromSQL(SQLCA,"SELECT sj,val01  FROM tab01 where  ytmh='"+rowcha+"' ORDER BY sj  ",">//執(zhí)行上述語句會動態(tài)地產(chǎn)生類型為grid的數(shù)據(jù)窗口dw_1。

//由下邊這段程序做出趨勢圖:

//將數(shù)據(jù)調(diào)入數(shù)據(jù)窗口

dw_1.SetTransObject(sqlca) 

dw_1.Retrieve()

rows = rowcount(dw_1)

if rows>0 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)

next

gr_1.SetRedraw(True)

sum=sum+sum1

st_1.text=string(sum)

end if

//圖的類型可根據(jù)不同需要隨意選擇,如選擇餅圖、柱狀、折線圖等。

4.6  變量的定義和賦值要正確

一些整型數(shù)值盡量不要定義成INT類型,因為一旦超過32767就會出錯,一定要定義成LONG類型;帶小數(shù)的數(shù)據(jù)變量要定義成DOUBLE型,若定義成LONG類型,會自動設(shè)去小數(shù)部分,出現(xiàn)精度錯誤。

    PB6中的日期類變量賦值方式比較固定,若日期變量定義錯了,執(zhí)行有關(guān)的SQL語句時會出錯,錯誤現(xiàn)象非常隱蔽,不容易調(diào)試,這是編程過程中的常見錯誤,在此特別強(qiáng)調(diào)一下。

   舉例如下:

   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")

關(guān)鍵字:通訊
About Us - 關(guān)于我們 - 服務(wù)列表 - 付費指導(dǎo) - 媒體合作 - 廣告服務(wù) - 版權(quán)聲明 - 聯(lián)系我們 - 網(wǎng)站地圖 - 常見問題 - 友情鏈接
Copyright©2014安裝信息網(wǎng) m.78375555.com. All rights reserved.
服務(wù)熱線:4000-293-296 聯(lián)系電話:0371-61311617 傳真:0371-55611201 QQ: 郵箱:zgazxxw@126.com 豫ICP備18030500號-4
未經(jīng)過本站允許,請勿將本站內(nèi)容傳播或復(fù)制
安全聯(lián)盟認(rèn)證