2014年12月30日星期二

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第二十日/超時第十三日>


今天還是忍不住弄了三個 Matrix Report,分別是 Account Movements,Cash Flow,及 Expenses Analysis。三個 Matrix Report 所覆蓋的期間都是最近十二個月內的資料。

Matrix Report 不難弄,基本上三個 Query 就可以了。首先,一個是用來作 Row Heading 的資料來源,另一個則是 Column Heading (Time) 及 Value 用;最後一個就是把前兩個 Query 整合在一起的 Crosstab Query。



設計好 Query 後,就是設計 Report 的時候。如果你想 Report 可以分組計 Sub-Total,就必須先在 Row Heading 的 Query 中設計好。為什麼不直接用 Table?因為用 Query 的自由度更大,只要個 Logic 無錯或不出現"笛卡兒積 (Cartesian Product)",你可以串聯 Database 內所有的資料。


當你設計好第一個 Matrix Report 後,你就可以用 Copy & Paste 神功去創造更多不同的 Matrix Report 以符合要求。你所要做的只是更改 Query 的 結構及 Report 的 Data Source,Group 及 Sorting 就可以了。


2014年12月27日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十九日/超時第十二日>


聖誕節的歡樂氣氛,使我的懶蟲症大發,一停就是七天。。。今天終於總算走出假日心情。

完成了 Deal Closing (Matching) 的 Printout,修改了一些 Queries。如無意外,明天應該是 User Login Controls,之後整個 Accounting DB 就算是完成了。

是時候計劃一下2015 新 Project。。。


2014年12月20日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十八日/超時第十一日>


今天完成了 Statement of Financial Position,其中最大的挑戰在於如何計算出Retained Profit。為了要得到 Retained Profit,必須要先求出 Opening Stock 及 Closing Stock。計算 Closing Stock 比較容易,但 Opening Stock 則比較困難。

我的方法是不依靠 VBA,而是透過三四層 Query 去求出不同時間值,每一項 Investment (Stock) 的餘數,再乘以相對應的市價。我以前初初學 Access,老是希望一條 Query 可以應付多種需求,但這是一種很錯的態度。我們應該將 Query 想像成一個一個的小齒輪,他們功能單一,容易複製,也可以放到不同環境中使用。這種概念要盡早深植腦中。

以下是 Statement of Financial Position 的部份 Query:

1.) 這是處理 Assets 及 Liabilities 但不包括 Investment (Stock) 的 Query  


2.) 這是處理 Equities 的 Query  


3.) 以下三個 Query 是用來找出最新 Market Price 




4.) 這是用來找出每項 Investment (Stock) 餘數的 Query


5.) 這是用總計每項 Investment (Stock) 市值的 Query



在某程度上來說,如果你可以掌握到如何計算 Stock 的餘數, 價值, 與總計, 那你距離自家制作一個基本 ERP 已經不遠了。

現在只剩下 Deal Matching 的 Printout 是比較複製,應該很快可以完成的了。。。


2014年12月18日星期四

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十七日/超時第十日>


今天沒有懶,好努力的從下班奮戰到剛才。每一次從這種忘我的感覺中清醒過來後,我越加相信寫程式是會上癮的。要不是明天還要上班,我想我會繼續的。。。

奮戰的結果是,完成了 Income Statement,而且把正負數也匡正了。除此之外,也把 Dashboard 的 Formula 也修改了,而使到所呈現資料的時間長度為三十一日。

另一方面,Statement of Financial Position 也已經大致完成,就只差將 Profit 細分為 Retained 及 Current 兩種。而這個部份,如果懶蟲不發作,應該今天可以弄好。

下一步就是要弄出 Deal Matching Note 的 Print Out。



2014年12月16日星期二

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十六日/超時第九日>


不知有沒有杜蟲藥是針對懶蟲的呢?

今天完成了Cash Flow Statement。現在系統內有了兩款不同的 CFS,一款(上圖左側)是可以自由選擇要覆蓋的日期,另一款(上圖右側)是包括由 Date One 開始所有的 Activities。

有時間性那一款 CFS,包含了 Cash and Bank 的 Opening 及 Closing。為了肯定系統沒有計錯數,所以我比較了 Balance Sheet 的數值 (下圖紅方格內的數值),很安慰地,系統是沒有計錯的。當然啦,電腦又怎會計錯數,要肯定的是我所設計的資料結構無錯而已。:-)

到了這一刻,我心知應該盡快完成 FRS,但我又開始想另一些功能。。。例如 Budgeting,和 Matrix Reports。。。心野但又懶!



2014年12月14日星期日

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十五日/超時第八日>


不知不覺已經進入了 User Control 的階段第二天。今天終於將 Voucher Printing 的功能實作出來,就是上圖在 Voucher Editor 背後那兩張 Form 。

很多初初使用 Microsoft Access 的朋友都有一個錯覺,以為要打印資料就一定要用 Report,其實不是的。我個人認為在 Accounting DB 來說,如果不需要用到 Running Balance,就不定用 Report。另外,如果是表格類的打印資料,例如 Voucher,就更加不應該考慮使用 Report 來實作。當然,這些都是我自己的經驗之談,只要你可以做出你想要的東西就好。一如已故的鄧伯伯所說:

"不管黑貓白貓,捉到老鼠就是好貓。"

在上圖看不到的是,在這兩張 Printouts 的底部,是會把總數轉換成文字(英文)格式,相關的程式碼我會在 Fine Tuning 階段完完整整的給大家參考。這不是我大方,而是這段程式碼並不是我的創作,而是一位熱心的英國網友分享出來的,我只是略作修改以符合自己的需求而已。

除了上述的東西,今天也修改了幾個 Form 的設計,加了選擇記錄的 Combo Box,在某些 Text Box 加入了 Double Click Event,和其他的小修小補。

User Control 階段還剩下 Financial Statements 及 Cash Flow Statement 的最後 Printout 版本,Matching 的 Printing 功能,和其他可以提升 User Experience 的小修改。

今天就這樣了,希望明天懶蟲不要發作。。。







2014年12月13日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十四日/超時第七日>



又拖沓了兩天。。。

今日終於完成這扭計骰及其相關的所有 Reports,八種不同的分類,應該都可以 cover 一個現代城市人的生活習慣,它們分別是 Fashion, Quarters, Dining, Transportation, Vacation, Education, Health Cards, 及 Entertainment。

本來想以單一個 Report 配合 VBA 去 Generat Results,但是想想可能使用者會嘗試一次開幾個不同 Categories 的 Report,於是我又土炮一點的辦法。。。就是做八個不同的 Reports 出來,加上在 Query 那鎖定 Certiria,那使用者就可以隨心所欲地開多個來檢視自己的消費習慣。

下一步弄什麼呢?完善 Voucher Editor 的 Functions 而其中最要緊的就是 Voucher Printing。話說當年驅使我設計Accounting DB 原因,就是我手上的 MXOB,竟然不可以將輸入好的 Voucher 打印出來。。。我不明白為什麼要這樣限制。。。

下圖是我在 FB Page 的 Cover Picture,是不是很漂亮呢?嘻嘻。。。



2014年12月10日星期三

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十三日/超時第六日>


好懶。。。拖了兩天才願意再繼續。。。

今天最主要的改進就是在 Portal 上一系列的按鈕,這些按鈕是用來開啟不同的 Form。在最右手邊那些是有關資料設定的,例如 Contacts, Accounts, Cash Flow Type 及 Voucher Type 等。除了按鈕之外,我亦略為收縮了 Portal 的大小,令整個佈局更加緊緻。

中間下方的則是資料輸入及報表等,如 Voucher,Matching , Market Price Update, Quick Statistic, Quick Financial Position 及 Printing Manager 等。

其實還有很多 Form 我沒有加在 Portal 上,而是隱藏在不同有關聯的 Form 之中。

明天繼續。。。

2014年12月6日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十二日/超時第五日>


今天花了五個小時,就為了弄出一個 Dashboard,就是上圖那個啦。為何要弄這個?因為人是懶惰的嘛,沒有人喜歡要按左按右才看到一些基本的東西的。這個 Dashboard 分為五部份,現在可以看到的只有其中的三部份。

左手邊是 Investment Items 及其市值,中間那個大圓餅則是提供一個圖像化的每種不同類型 Investment 的分佈比例。

右手邊上部份是 30 日內的 Cash Flow Summary。而中至下部則是 30 日內的 Income Statement。今次的 Income Statement 比早昨天那個有幾點不同。第一,這次是有時間性的,上篇那個則沒有; 第二,匡正了正負數的安排,使得其更加直觀; 第三,既然有時間性,那就要實作出 Opening Stock 及 Closing Stock。

這個 Dashboard 除了作為演示用途外,還將會是這個 Project 的 Portal 之用。希望完成後不會給人太混亂的感覺。

一個人弄這些是很累的,而一累人就會出錯。我知道有些地方我是貪方便走了捷徑,而未有堅守自己設想的完則。唉,更大問題是我真的很不喜歡寫筆記。。。到 Fine Tuning 階段時,這些的缺憾與失責,一定會使我非常頭大。

還有,我真的好想有部 Microsoft 的 Surface Pro 3 來實機測試。My dear Mr. Bill Gates, can you hear me??? 哈哈!!

睡覺發夢去。。。。


2014年12月3日星期三

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十一日/超時第四日>



終於都到了這次旅程的一半。哈哈,真的,需然好像一個 Accounting Database 要有的都已經有了,但我可憑自己的小小經驗跟你說,User Interfaces 才是真要命的地方。

這篇的兩張圖,都是基於同一套 Datasets,而這個 Datasets 就是依從上一篇所列的公式。上圖是以 Form 來表達 Balance Sheet & Income Statement, 而下圖則是用 Report。因為時間關係,我並未完完全全的跟隨一般慣常的排法,當然要跟足是可以的,在 Fine Tuning 階段我便會實作出來。

其實,寫 Database 並不是很難,不過坊間很多書都把簡單事情複雜化。我以往也曾花了不少時間在書海中尋找出路。但原來,自己落手落腳弄一個出來,得到的經驗,是書本永遠給不了你的。

歡樂嘅時間過得特別快,又係時間講 Bye Bye。周公急 Call 我了,請呀!!!