2010年12月29日 星期三

能夠自行設計權限管理的元件嗎

最近開發使用其他公司開發好的工具,這個工具提供多個不錯的元件,不過如果經費有限的專案可能買不起這個工具,但是開發時程通常是考量的因素,因為經費有限所以時間更加緊迫,這個工具提供權限管理的功能,除了能夠管控網頁程式之外,也能夠管控檔案(沒有權限連圖片都不能存取),目前的需求詳細到要求能夠控制網頁程式裡面的按鈕或資料,可惜就我所知這個工具並沒有提供到這種程度。
有可能已經有這樣的產品出來了,只是我沒有找到而已。如果工程師能夠用自己的方式開發程式,到最後權限的部分統一放在MasterPage,權限採用矩陣的方式呈現出來,從資料面的角度,不只針對網頁程式,更可以列出網頁程式內的按鈕勾選是否顯示或使用,從使用者的角度,帳號管理機制不管是自行撰寫的,還是使用微軟提供的,都能夠輕鬆的整合,最好開發成ISAPI的形式,這樣效率比較好,但是如果出錯會危害整個IIS…。

如何顯示一份多頁的報表

日劇TRICK 圈套上田次郎教授的著作「為何不盡力做到最好呢(Why don't you do your best?)」提醒我隨時都要保持年輕的心,要跳脫出自己既定的思維。
專案之中用到SSRS,最近在撰寫報表規格說明時才想到這個問題,一份報表可能包含很多頁的報表,也就是一份報告不只有封面而已,還有目錄、內容等,我知道Crystal Reports能夠達到一份報表多個頁面,我覺得SSRS好像也能夠達到這種程度,但是我目前的功力只能一份報表一個頁面。
下圖是目前一份報表二個頁面的做法,先查詢第一頁,第二頁在依據第一頁的編號找到對應的頁面(第二頁可能沒有內容)


正面的預覽


背面的預覽


我的想法是按下預覽之後,條列出符合的資料,當使用者點選超連結之後才出現報表,將第一頁與第二頁合併之後出現在使用者面前,如果沒有第二頁就只出現第一頁。
2010/12/31補充
將正面報表加入子報表,來源指向背面,由於資料超過一頁,加上資料頁群組分頁等因素,不需要修改程式就能夠達到正面、背面交替出現的報表。

2010年11月23日 星期二

使用Firebird代替InterBase

Firebird是InterBase的Open Source專案,為什麼會有使用Firebird的需求呢?因為需要用到IBLocal資料庫,但是使用SQL Explorer卻發生找不到GDS32.DLL的錯誤,想知道除了安裝InterBase之外,是否有其他解決方法,網路上都推薦使用Firebird代替InterBase,抱著姑且一試的心態,重新啟動電腦後,輸入預設的密碼masterkey就可以使用。從SQL Explorer -> Object -> Version Information可以知道安裝之後多出GDS32.DLL,我想這就是可以使用的主要原因。

2010年11月22日 星期一

工程師的自我修養-協助面試

所謂「協助面試」是指提出一些問題,讓主管們藉由面試者的回答決定是否錄取面試者,通常能夠參加面試,算是主管對自己的肯定。
通常我會提出的問題,包含工作上曾經遭遇過的問題、履歷與自傳的問題、與工作需要具備專業的問題,我會把握每次面試的機會,和面試者進行經驗的分享,就算沒有機會當同事,至少透過這次面談累積自己的專業知識。

2010年11月19日 星期五

做球給其他的同事

有時候只是心情的問題而已,就會讓同事更願意幫我們的忙。這是我從B君身上學到的,有時他會詢問其他的同事,跟經理報告時他總是會說「還好C君剛才幫我的忙」類似的話,幫他忙的同事當然心情會好,以後他有問題時更願意全力協助。
當然做球給其他的同事,這是發至於內心的感動,在與主管報告時,可以在他面前感謝同事幾句,對同事而言,無意間聽到辦公室的耳語,會覺得同事值得幫忙;對自己而言,少了鋒芒畢露卻多了些謙虛。

2010年11月3日 星期三

工程師的自我修養-灌資料

向周星馳電影「喜劇之王」致敬,讓我看見什麼是敬業精神。
根據E君的說法,使用Excel整理需要匯入的資料,您整理的技術越好,後面需要花費的時間越少,所謂技術好就是會使用VLOOKUP或HLOOKUP整理成為代碼、資料剖析拆解資料、整理資料成為多個資料表、樞紐分析表剔除重複,使得左邊與上面的資料唯一,並且分析資料例如加總等、取消「合併儲存格」。
(感謝E君提供上述使用Excel整理資料的方法,並且感謝您這些日子以來的幫忙。)
VLOOKUP 函數

複製貼上:
根據E君的說法,SQL Server 2000的SQL Server Enterprise Manager不支援此功能。

使用OPENROWSET:
撰寫Transact-SQL協助匯入資料,必要時需要將查詢結果回寫至Excel。

DECLARE cursorXXX CURSOR FOR SELECT A,B,C,D,E FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=C:\refTest.xls', 'SELECT * FROM [Sheet1$]')


使用SSIS(SQL Server Integration Services):
沒有用過,接近撰寫匯入程式,但是搭配GUI感覺上又比較簡單,擁有.NET Framework平台的支援,上述兩種方法只適用於偶而的需求,如果是經常性的需求,建議使用這個方式或是自行撰寫匯入程式。
dotNET 技術聖殿-部落格: SSIS功能體驗(一)、匯入EXCEL檔案

2010年11月2日 星期二

希望opener幫我們做一些事情

opener是指JavaScript的「window.opener」。
opener在我的理解是開啟子視窗的父視窗,會用到opener通常是我們在子視窗希望父視窗幫我們做一些事情,例如開啟子視窗進行編輯,希望關閉子視窗時同時能夠更新父視窗;或是開啟子視窗條列資料,按下子視窗的編輯後會關閉子視窗,父視窗會跳到資料編輯頁面。上述兩個功能很直覺就會想到用「window.opener.location.href」,但是在IE會有問題。
Object window.opener.location.href is malfunctioning in IE8
window.opener.location.href do not work with Win7 and IE8
我的解決方法是子視窗關閉前呼叫以下函數。

window.opener.execScript("__doPostBack('" + eventTarget + "', '" + eventArgument + "')", "JavaScript");

這個函數會呼叫父視窗執行__doPostBack(),此時在父視窗我們可以在Page_Load(),依據參數將頁面導到其他頁面。