|
您的位置:首页
- 统计信息化 - 正文
利用ASP和ActiveX技术来制作
基于数据库的动态统计图
我们通常制作的统计图表网页,是用EXCEL等工具软件作出一些统计图表,以GIF格式把他们粘贴到超文本中制成的。但这些网页是静态的,也就是说这些网页不能根据对数据库查询结果的变化而随时更新网页中的统计图。我们根据在实践中的一些摸索,把ASP访问数据库的技术与ActiveX技术巧妙地结合起来,根据对数据库查询结果制作动态的统计图,就克服了静态统计图的缺陷。现将有关技术介绍如下:
一、有关技术介绍
ASP(Active Server Page)是服务器端脚本编写环境,使用它可以创建和运行动态、交互的Web服务器应用程序。使用ASP可以组合HTML页、脚本命令和ActiveX组件以创建交互的Web页和基于Web的功能强大的应用程序。其优点一是具有CGI接口对象化;使用ASP收集网页数据,则ASP会代为解析,并且转换成对象供Script语言读取。二是可以使用ActiveX对象:除了它本身提供的对象外,凡是Windows环境中的ActiveX对象也都是ASP网页制作中可以直接引用的系统资源。我们利用ASP网页通过访问ODBC,可以实现对服务器上的数据库的访问。
ODBC(Open DataBase Connectivity)开放的数据库接口程序,Microsoft发表的程序接口,ASP就是通过这个接口存取服务器数据库。
ActiveX是由Microsoft公司定义的用于Internet的一种对象链接与嵌入技术(OLE),ActiveX控件是一个提供特定功能的二进制对象,就如同一个计算机程序一样,它们可以被加入到你的Web应用程序、Java小件以及使用JavaScript和VBscript中,利用ActiveX中的Chart控件,可产生不同类型的图表,很适合我们在网上制作显示各种统计图和曲线的需要。
在网页中加入ASP程序,ASP可以通过ADO访问ODBC,再连接到相应的数据库进行访问和查询,将查询结果数据作为参数传递给ActiveX的Chart控件,来影响图表中的数据值,然后对Chart对象相应的设置,可以产生所要求的各种不同类型的图表,如:区域图、棒状图、列图、饼图等。
二.制作步骤
1、建立数据库
用Foxpro或其它数据库软件建立需要的数据库。例如数据库是利用FoxPro建立的“wnjjkx3”数据库,包含有NF(年份)、YF(月份)、ZBMC(指标名称)、XZ(选择)、DzM(地址码)S1(数据)等字段,并加载相应的数据到数据库中。
2、设置ODBC,建立数相库的链接
进人控制面板设置,双击ODBC数据源,选择DNS,单击“添加”,选择“Microsoft FoxPro Driver”为驱动程序,点击“完成”,然后在“数据源名”中输入“数据库的文件名”,单击“选取”浏览选择:“数据为路径”就完成了对ODBC的设置。
3、编写查询表单
通过用户查询,提供查询的数据库的有关要求,如查询某年、某月的哪些指标的选择。详细见示例:附1。
4、写ASP网页访问数据库
在网页中使用ActiveX的Chart控件,对Chart控件对象的属性进行设置,Chart控件的各属性有:rows(序列行数)、columns(指定序列的列数)、charttype(图表的类型,如:简单饼图为“0”、堆叠式列图为“12”)、scale(缩放的百分比)、DisP1aylegend(隐藏或显示图例)、用Data [x]来指定行x中的数据值等,使用这些属性,即可达到显示相应的动态统计图表。我们通过查询麦单,获取用户对数据库查询要求参数,将这些查询要求参数传递给ASP程序,ASP程序按照查询要求通过对数据库的访问,获取查询结果,将查询结果作为参数,传递给ActiveX的Chart控件,在返回给用户的统计图页面上显示出来。
三、示例程序
我们用此作法完成了陕西省十地市主要经济指标对比图查询程序,源程序如下:
附 1.查询表单文件:JJKX3Chart.html
<html>
<head>
<title>全省各地市主要经济指标对比</title>
</head>
<body bgcolor=“lightgreen”link=“#0000ff” vlink=“#800080”>
<p align=“center”><font lang=“ZH-CN” color=“#ff0000”face=“黑体”><big><big><big>十地市主要经济指标对比统计图查询</big></big></big></font><u></p>
<u><font face=“system”
lang=“ZH-CN” color=“#ff0000”>
<form action=“chart3.asp”
method=“post”>
<div align=“center”></font></u><div
align=“center”><center><table cellspacing=“0”
border=“0” width=“683” height=“1”>
<tr>
</u><td width=“142”
valign=“top” align=“left” height=“1” rowspan=“3”><font
face=“楷体_GB2312”><big><font lang=“ZH-CN” color=“#008000”>年份:<br>
</font></big><font
lang=“ZH-CN”><select name=“nf” size=“5”>
<option selected value=“1999”>1999年</option>
</select><big></big></font></font></td>
<td width=“166” valign=“middle”
align=“left” height=“1” rowspan=“3”><font face=“楷体_GB2312”><big><font
lang=“ZH-CN” color=“#008000”>月份:<br>
</font></big><font
lang=“ZH-CN” color=“#00ff00”><select name=“yt” size=“12”>
<option value=“3” selected>三月份</option>
<option value=“4”>四月份</option>
<option value=“5”>五月份</option>
<option value=“6”>六月份</option>
<option value=“7”>七月份</option>
<option value=“8”>八月份</option>
<option value=“9”>九月份</option>
<option value=“10”>十月份</option>
<option value=“11”>十一月份</option>
<option value=“12”>十二月份</option>
</select><big></big></font></font></td>
<td width=“304” valign=“top”
align=“left” height=“1” rowspan=“3”><font face=“楷体_GB2312”><big><font
lang=“ZH-CN” color=“#008000”><br>
</font></big><font
lang=“ZH-CN”><select name=“xz” size=“8”>
<option selected value=“1”>1、工业总产值</option>
<option value=“2”>2、工业销售产值</option>
<option value=“4”>3、社会消费品零售总额</option>
<option value=“5”>4、地方财政收入</option>
<option value=“6”>5、地方财政支出</option>
<option value=“7”>6、商品零售价格指数</option>
<option value=“8”>7、居民消费价格指数</option>
</select></font></font></td>
<td width=“602” valign=“top”
align=“left” height=“1”><input type=“submit” value=“查阅资料”
style=“color:rgb(255,0,0)”></td>
<u>
</tr>
<tr>
<td width=“602” valign=“top”
align=“left” height=“1”></u><input type=“reset”
value=“重新选择” style=“color:rgb(255,0,0)”></td>
</tr>
<tr>
<td width=“602” valign=“top”
align=“left” height=“0”><!--webbot bot=“ImageMap” default=“jjkx.htm”
rectangle=“(1,0)(26,24) jjkx.htm” src=“../images/gotogy.gif”
width=“27” height=“26” alt=“gotogy.gif(272 byetes)” border=“0”
starsspan --><MAPNAME=“FrontpageMap”><AREA SHAPE=“RECT”
COORDS=“1,0,26,24” HREF=“jjkx.htm”><AREA COORDS=“0,0,10000,10000”
HREF=“jjkx.htm”></MAP><a href=“../_vti_bin/shtml.dll/jjkx/jjkx3chart.HTM/map”><img
ismap usemap=“#frontpagemap” border=“0” height=“26” alt=“gotogy.gif(272bytes)”
src=“../images/gotogy.gif” width=“27”></a><!--webbot
bot=“ImageMap” endspan i- checksum=“50221” --><a href=“../jjkx.htm”><small><font
color=“#ff0000”></font></small></a></td>
</tr>
</table>
</center></div></div>
</form>
<p align=“center”></p>
</body>
</html>
附 2.ASP描述文件:chart3.asp
<html>
<body bgcolor=“#99ffff”>
<%
dim m(10)
nfl=request(“nf”)
yfl=request(“yf”)
xzl=request(“xz”)
table=“wnjjkx3”
driver=“{Microsoft DBase Driver(*.dbf)}”
dbq=“d:\inetpub\kx”
set conn=Server.CreatedObject(“ADODB.Commection”)
conn.Open“driver=”&driver&“;dbq=”&dbq
sql=“select zbmc,sl from wnjjkx3
where (yf=”+yfl+“and nf=”+nfl+“and xz”+xzl+“and dzm>610000)”
set rs=conn.Execute(sql)
k=0
rn=“”
While Not rs.EOF
rn=rn+rs.fields(0).value
d(k)=rs.fields(1).value
rs.MoveNext
k=k+1
rn=ltrim(rn)
rn=rtrim(rn)
%>
<%
if xzl=1 then
zb=“工业总产值(现价、亿元)”
end if
if xzl=2 then
zb=“工业销售产值(亿元)”
end if
if xzl=4 then
zb=“社会消费品零售总额(亿元)”
end if
if xzl=5 then
zb=“地方财政收入(亿元)”
end if
if xzl=6 then
zb=“地方财政支出(亿元)”
end if
if xzl=7 then
zb=“商品零售价格指数(%)”
end if
if xzl=8 then
zb=“居民消费价格指数(%)”
end if
%>
<font face=“黑体” color=“blue”>
<center><h3><%=nfl%>年<%=yfl%>月份<%=zb%></h1></center>
<center><h4>十地<市>对比图</h2></center>
</font>
<OBJECT
classid=“clsid: FC25B780 - 75BE
- 11CF - 8B01 - 444553540000”
id=IEchart
width=550
height=200
align=center
hspace=25
vspace=25
CODEBASE=“http://140.61.141.88/iechart.ocs”
>
<param name=“ChartStyle”
value=“1”>
<param name=“ChartTYPE” value=“12”>
<param name=“HgridStyle”
value=“1”>
<param name=“VgridStyle”
value=“0”>
<param name=“ColorScheme”
value=“0”>
<param name=“DisplayLegend”
value=“1”>
<param name=“Backtyle” value=“1”>
<param name=“BackColor” value=“#aaffaa”>
<param name=“ForeColor” value=“#ff00ff”>
<param name=“Scale” value=“100”>
<param name=“Rows” value=“10”>
<param name=“Columns” value=“1”>
<param name=“RowNames” value=“西安市
铜川市 宝鸡市 咸阳市 渭南市 汉中市 延安市 安康地区 商洛地区 榆林地区”>
<param name=“data[0]” value=<%=d(0)%>>
<param name=“data[1]” value=<%=d(1)%>>
<param name=“data[2]” value=<%=d(2)%>>
<param name=“data[3]” value=<%=d(3)%>>
<param name=“data[4]” value=<%=d(4)%>>
<param name=“data[5]” value=<%=d(5)%>>
<param name=“data[6]” value=<%=d(6)%>>
<param name=“data[7]” value=<%=d(7)%>>
<param name=“data[8]” value=<%=d(8)%>>
<param name=“data[9]” value=<%=d(9)%>>
</object>
<center><a href=“jjkx3chart.htm”>返回</a>
</center>
</body>
</html>
我们只需加入或更新数据库的数据即可,而无需每次都要制表作图,修改页面,这一技术利用ASP查询数据库的有关数据,传递给ActiveX的Chart控件作参数,在查询结果页面上显示出统计图来。这一技术的显著特点其核心是ActiveX技术,基于Web上的Client/Server应用,尤其适合在Internet上应用,具有强大的统计图表功能。
(作者:单位:陕西省渭南市统计局)校对:高亚军
摘自《统计信息化》2001年第六期
|