巧用ASP實現Web資料統計、報表和列印

來源:互聯網
上載者:User
web|列印|資料|統計 摘 要:本文闡述一種利用ASP實現Web資料統計、報表的基本思路和實現方法,同時提供一種巧妙調用Word列印報表的解決方案。

關鍵詞: ASP,資料統計,報表,列印,Word



1、 引言

隨著Internet的飛速發展,基於Web開發的業務應用系統越來越多,如辦公自動化、電子商務和管理資訊系統(MIS)等。這些Web業務應用系統經常涉及到資料的統計、報表和列印。ASP在實施動態互動和產生動態網頁面方面具有很大的優勢,但在處理複雜資料統計、報表和列印時卻遇到不小的麻煩。本文闡述一種利用ASP實現Web資料統計、報表的基本思路和實現方法,同時提供一種巧妙調用Word列印報表的解決方案。



2、 應用執行個體

假設有一家公司利用網路MIS系統對公司員工進行管理,必然會涉及到各部門的員工統計。為了簡單起見,假設最終的統計報表如下:



公司員工統計表

部門
合計
員工姓名

市場部
2
張三



李四

研發部
3
王五



趙六



劉七

員工合計
5





與傳統單機MIS系統相比,在網路MIS系統中使用ASP實現以上資料統計、報表和列印會遇到以下問題:

(1) 資料統計時需要按部門進行分類統計,同時要記下各部門員工的具體名單。

(2) 報表產生時需按具體要求動態繪製幾行幾列表格,同時在適當的地方保持空白。

(3) 表格列印可以簡單地按網頁列印,但效果不好,而且不容易控制。



3、 實現方法簡述

基於Web的業務應用一般採用三層結構,用戶端是普通的Web瀏覽器,中間商務邏輯應用程式層存放於Web伺服器上,由Web伺服器上的資料庫介面訪問後台資料庫。利用ASP實現Web資料統計、報表和列印的過程如圖所示:


瀏覽器

HTML

VBScript

統計

報表

Word

對象

Web伺服器

商務邏輯實現

資料庫

提供者







Word本地列印












(1) 用戶端向Web伺服器發送資料統計請求。

(2) Web伺服器執行SQL語句,從後台資料庫取得統計資料,在頁面上動態產生報表。

(3) 在用戶端運行指令碼,使用VBScript指令碼函數CreateObject在本地建立Word的Document對象的執行個體,也就是在用戶端建立Word文檔,設定表格屬性,然後將頁面上的報表資料填入本地Word表格,最後儲存文檔,執行本地Word列印。



4、 實現過程分析

(1)資料庫連接

首先建立資料庫(data.mdb),簡單的員工資料表(personnel)結構如下:

personnel:department,文本;name,文本;

然後建立一個ODBC資料來源(DSN),利用DSN指向ODBC資料庫。

(2)程式碼分析(在此只分析統計報表程式tongji.asp)

<%

sql = "Select department,count(department) From personnel group by department" //將記錄按部門分類統計

Set Cnn = Server.CreateObject("ADODB.Connection") //串連資料庫

Cnn.Open "data"

Set Rs = Server.CreateObject("ADODB.Recordset")

Rs.CursorType = 3

Rs.LockType = 3

Rs.Open sql, Cnn

If Rs.EOF Then //如果沒有記錄就結束

Response.End

End If

%>

<html>

//以下顯示表格標題和輸出表頭

<p align="center"><b><font size="4">公司員工統計表</font></b></p>

<div align="center">

<table id="data" border="1" width="606" height="53" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111"> //注意:此處標明表格的id為data

<tr>

<td width="93" height="24">

<p align="center"><font size="2">部門</font></td>

<td width="78" height="24">

<p align="center"><font size="2">合計</font></td>

<td width="413" height="24">

<p align="center"><font size="2">員工姓名</font></td>

</tr>



<%

hj=0 //設定變數,總人數合計初始值為0

//以下While迴圈按部門依次完成統計和報表

while (not rs.eof)

departmenttmp=rs("department") //設定臨時變數,儲存當前部門名稱

sqlstr="select * from personnel where department='"&departmenttmp&"'" //找出當前部門的所有員工

Set conn = Server.CreateObject("ADODB.Connection") //再次串連資料庫

conn.Open "data"

Set rss = Server.CreateObject("ADODB.Recordset")

rss.CursorType = 3

rss.LockType = 3

rss.Open sqlstr, conn

number=0 //設定變數,當前部門人數合計初始值為0

//以下While迴圈計算出當前部門人數合計

while(not rss.eof)

rss.movenext

number=number+1

wend

hj=hj+number //總人數合計為各部門人數之和

rss.movefirst

flag=0 //設定變數,flag用來判斷當前部門是否首次出現,初始值為0

//以下While迴圈輸出當前部門統計資料和員工名單

while(not rss.eof)%>

<tr>



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。