摘要:軟件中增加統計圖表分析功能能夠更加直觀、友好,通過一個delphi+Acess的簡單實例,介紹了一種用盡量少的代碼中利用Execl已有豐富多彩的圖表分析功能來實現這個功能。
關鍵詞:delphi;Acess;數據庫;統計分析;圖表
中圖分類號:TP311.52文獻標識碼:A文章編號:1009-3044(2008)35-2439-01
Using Execl for Program Increase Statistical Chart
ZHUANG Xiao-gang
(Changzhou Pharmaceutical Co., Ltd., Changzhou 213003, China)
Abstract: In the software increases the statistical graph analysis function to be able to be more direct-viewing, to be friendly, through a delphi Acess simple example, introduced one kind had the richly colorful graph analysis function with as far as possible few codes in using Execl to realize this function.
Key words: delphi; acess; datebase; statistical analysis; graph
1 引言
在企業管理中,利用計算機輔助分析統計是必不可少的工作。如果分析結果能夠以類似Execl統計分析圖(比如柱狀圖、餅圖等)的形式出現,無疑將更加直觀、生動。當然,幾乎所有的編程語言也都提供了這樣的圖表功能或者控件。但是,相對來說功能比較簡單,很多復雜的圖表分析很難實現,而比較好的一些商業控件又價格不菲。其實Execl做為一個成熟而又應用廣泛的應用軟件早已被廣大應用人員接受,它的圖表分析功能以及制作也比較簡單,基本足夠滿足一般用戶的需要,于是我們想到利用Execl來給我們的程序增加統計圖表功能。并已應用于我們實際的系統。
2 具體實現
下面給出示例:
第一部分,Execl和Acess的處理。
第一步:準備測試數據庫test.mdb 其中“明細表”是我們的模擬數據。
第二步:打開test.mdf 新建查詢:Select 月份,Sum(銷售額) as 月銷售額 Into月份匯總 From明細表 Group by 月份 Order by月份執行,會看見新建了一張名為“月份匯總”數據表。無需保存新建的查詢,關閉并退出Acess。
第三步:新建Execl文件,激活sheet1(缺省打開就已經激活了),選中A、B兩列。在“數據”→“導入外部數據” →“導入數據”中選擇我們的測試數據庫test.mdb,選中其中的“月份匯總”。在Execl 的A、B兩列將看見數據。
第四步:在Execl 中利用圖表向導
第二部分,是程序編制部分,相當簡單。
新建一個程序放置數據控件ADOConnection和ADOQuery各一個,按鈕控件Button 2個,如下圖1所示。
圖1
ADOConnection1中ConnectionString的值置為:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False
ADOQuery1中Connection=ADOConnection1
雙擊Button1寫入如下代碼:
self.ADOConnection1.Connected:=true;
with self.ADOQuery1 do
begin
Active:=1;
SQL.Clear;
SQL.Add('Select * From MSysObjects Where Flags=0 AND Type=1 AND name =\"月份匯總\"');
Active:=true;
if not IsEmpty then
begin
Active:=1;
SQL.Clear;
SQL.Add('Drop table 月份匯總');
ExecSQL;
end;
Active:=1;
SQL.Clear;
SQL.Add('Select 月份,Sum(銷售額) as 月銷售額 Into 月份匯總 From 明細表 Group by 月份 Order by 月份');
ExecSQL;
end;
self.ADOConnection1.Connected:=1;
showmessage('月份數據匯總完畢,請打開月份匯總文件并刷新!');
好了,大家可以嘗試執行。執行完畢后,只需打開月份匯總.xls 選擇sheet1 在“數據” →“刷新數據”就會更新我們的數據,(第一次刷新可能會因為文件路徑更改,要求更改,確認通過就可以了),同時圖表中的數據也會改變。
進入Acess打開test.mdb,修改明細表數據,重新執行程序,刷新后數據也會同步修改。
Button2中我們是產生地區匯總數據的功能,對應地區匯總表,只要改動代碼中的畫線部分,并根據需要改動第一部分的第三、四步驟,留給讀者自己嘗試解決。(源碼中都已經包含)
限于篇幅要求,這里沒有給出數據增刪改的功能,相信大家自己的系統已經解決了這些基本功能,只是提供了一種解決問題的思路,僅僅對原有的系統增加少許代碼就可以“無償”的使用豐富多彩的統計分析圖表功能。而這些功能事先由程序員制定成相對固定的模板,對應用人員的要求很低,只需執行程序、打開、刷新。
3 結論
我們的實際系統是用delphi+SQL 2000 實現的,本文為了能方便的說明問題,改用delphi+Acess本地數據庫來實現。程序負責處理數據的輸入、修改、刪除、整理等,這部分我們就不在示例中出現了。
順便提一下,有些讀者認為用vb+Acess 來實現也許更加能無縫連接,這樣組合,在處理小型數據庫時是比較合適的。但是在實際應用過程中,vb對大型數據的處理能力遠遜于delphi+SQL 2000的能力。有能力的讀者可以進一步利用delphi操作Execl讓它自動打開、刷新并出現在系統需要的界面上。
本文提供了一種讓Execl來幫助我們實現統計圖表,使原有的系統更加友好直觀,分析結果也方便復制和再次利用(比如制作powerpoint幻燈片講解),程序人員可以根據不同要求制作不同的模板文件交給用戶,對用戶的要求大大降低。而有能力的用戶也能自己利用Execl做不同形式的統計分析圖,以符合自己的需求。
本文在Windows 2000/XP+Office 2002/2003+Delphi 7.0 實現通過。
參考文獻:
[1] 甘志,李幼儀,陳宜凱,等.Dephi高級應用開發篇[M].北京:清華大學出版社,2003:199-201.
[2] Dephi 7組件編程參考手冊編寫組.Dephi 7組件編程參考手冊[M].北京:人民郵電出版社,2003:716-745.
[3] Gini Courter,Annette Marquis.Excel 2002從入門到精通[M].北京:電子工業出版社,2002:163-193,325-351.
[4] Michael Otey,Paul Conte.SQL Server 2000a開發指南[M].北京:清華大學出版社,2002:88-114.