上班負責開發、維護的系統是用oracle soluction,oracle developer 開發搭配java、struts、workflow,資料庫是oacle 10g、9i等..。似乎是這陣子很像很熱門的Model-View-Controller (MVC)開發模式,細節也還沒弄得非常清楚,不過經過這一兩個月的try and error有比較上軌道就是了,但是對於每次view object改變或是要改畫面內容就要重新產生struts還是有點不習慣也覺得有點麻煩。
在報表部分則是使用oacle report,原本面試的時候課長有提到部門也有用到crystal report,但是沒想到那是部門內另外一組在使用的,而我們這組是使用oracle repoort。oracle report物件的觀念好強烈,在設定報表格式的時候,儲存格、列、表格等...一層一層,如果一個不小心可能就產生error ORZ。資料庫資料很多、目前上線的系統也不少,所以相對的要從裡面找到一些需要的資料就需要比較大的工程,不再像學校那樣輕易的幾個語法就可以把資料抓出來了。我想工作到目前為止,最大的收穫就是資料庫的SQL語法。
前幾天系統有一個需求,要判斷使用者的需要,在報表呈現某些文字。聽到這樣的需求,我的反應就是在網頁部分做判斷,依使用的需要,導到不同的報表,所以我需要做兩張一樣的報表一張是有呈現某些文字的、一張沒有。在透過使用者的勾選產出需要的報表。
但是,組長聽了這樣的需求,交了我一個方法:在report裡作判斷。用一段PL/SQL來判斷是否呈現文字,加了一段PL/SQL這樣的需求就可以用一張報表解決了。
先在reoprt裡建立一個公式
在從公式裡的屬性寫一段PL/SQL
function CF_1Formula return char is
SignFlag varchar(200);
begin
if :USER_SignFlag = 'Y' then
SignFlag :='院長_________ 管中主任_________ 副院長_________ 教學部_________ 單位主管
________ 製表人________';
else
SignFlag :='';
end if;
return SignFlag;
end;
在報表的格式裡設定要呈現的位置
幾道簡單的手續,就可以把功能完成了。
雖然這不是什麼艱深的技術或是多複雜的需求。但當組長跟我說這樣的作法時,我真是驚訝萬分。同樣的問題,確有差異這麼大的解決方法,同樣的問題,思考的方向卻南轅北轍,但結果卻又是一樣的。
這就像生活一樣,遇到一樣的問題,不同的想法、作法,雖然差異很大。但是其實結果與目的是一樣的。