2.13.2 年销售额分析设计
用户可以通过单击菜单主导航“查询统计”→“年销售额分析”超级链接,进入年销售额分析页面。该页面主要是以图表形式显示指定年份中所有商品的销售额情况,在此按柱状图和线性图两种模式进行分析。
年销售额分析页面的设计效果如图2.29所示。
|
| 图2.29 年销售额分析页面的设计效果 |
年销售额分析页面中涉及到的HTML表单元素如表2.21所示。
表2.21 年销售额分析页面中涉及到的HTML表单元素
|
名 称 |
类 型 |
含 义 |
重 要 属 性 |
|
form1 |
form |
表单 |
method="post" action="" |
|
year |
select |
选择年份 |
<%for i=2000 to 2049%>
<option value="<%=i%>" <%if i=year(date()) then response.Write("selected")%>><%=i%>年</option>
<%next%> |
|
Submit |
submit |
“确定分析”按钮 |
class="btn_grey" |
|
form2 |
form |
表单 |
method="post" action="" |
|
pillar |
button |
“柱状图分析”按钮 |
onClick="charts('pillar')" |
|
line |
button |
“线性图分析”按钮 |
onClick="charts('line')" |
首先提交在年度下拉列表中的数据信息,并检索数据库中的tab_sell_main表,将本年度的月份进行分组,并对其金额进行汇总。如果没有检索到本年度的数据信息,将弹出信息提示。完整代码如下:
<!--******************************* cxtj/yearxsfx.asp ***********************************--> <% set conn=server.createobject("adodb.connection") set rs=server.createobject("adodb.recordset") conn.open application("dsn") qyear=request.Form("year") if qyear<>"" then '查询条件判断 sql="select sum(je) as sumje,month(xsdate) as xsmonth from tab_sell_main where year(xsdate)="&cint (qyear)&" group by month(xsdate)" rs.open sql,conn,1,3 if rs.eof then%> <script language="JavaScript"> alert("<%=qyear%>年没有销售记录!") //弹出提示对话框 window.location.href="yearxsfx.asp"; //跳转到指定页面 </script> <%response.End() else counts=rs.recordcount '获得总记录数 end if end if %> <% set conn=server.CreateObject("adodb.connection") '创建数据库对象 set rs=server.CreateObject("adodb.recordset") '创建记录集对象 set myrs=server.CreateObject("adodb.recordset") '创建记录集对象 set rec=server.CreateObject("adodb.recordset") '创建记录集对象 conn.open application("dsn") '打开数据库 sql="select id from tab_cgdan" rs.open sql,conn,1,3 '打开记录集 str=myrs("id") cgid=cint(mid(str,7,5))+1 cgid="cg"&year(date())&cstr(cgid) else cgid="cg"&year(date())&"10001" end if session("auto")=cgid '生成采购单号 %>
|
从上面的代码中可以看出,如果检索到数据后,则通过counts=rs.recordcount语句汇总出当前数据表中的记录数。
下面应用了ActiveX控件的MSChart对象来统计指定年份的销售额。首先判断汇总的记录数是否大于0,如果大于0,说明本年度存在销售额,接下来就调用自定义函数charts(type),将统计后的销售额以图表形式输出。在charts(type)函数中,参数type用于标识图表的类型,当type=="line"时,就以线性图进行分析;当type=="pillar"时,就以柱状图进行分析,分别通过rowcount和ColumnCount来设置与图表关联的当前数据网格中的行数和列数,然后利用Data属性控制当前数据点的值,即纵坐标值。完整代码如下:
<!--******************************** cxtj/yearxsfx.asp **********************************--> <%if counts>0 then%> <object classid="clsid:3A2B370C-BA0A-11D1-B137-0000F8753F5D" name="chart" width="100%" height="300"> <%'定义对象,该对象命名为chart%> </object> <% for i=1 to counts '循环从1循环到counts %> <script language="javascript"> charts("pillar"); '调用charts()函数 function charts(type){ if (type=="line"){ chart.chartType=3; 'chartType是对象chart的属性:表示图形类型 } if (type=="pillar" ){ chart.chartType=1; } chart.ColumnCount=1; 'ColumnCount是对象chart的属性:表示设置与图表关联的当前数据网格中的列数 chart.Title="<%=qyear%>年销售额分析表"; '图表标题 chart.rowcount=<%=counts%>; 'rowcount属性:数据行个数 chart.row=<%=i%>; 'row属性:当前数据行 chart.rowlabel="<%=rs("xsmonth")%>月份"; 'rowlabel属性:返回或设置一个数据标签,该标签用来标 识图表中的当前数据点。横坐标值 chart.Data=<%=rs("sumje")%>; 'Data属性:当前数据点的值。纵坐标值 chart.Footnote="注:纵坐标为销售额,单位为(元) ;空缺的月份没有销售额" } <% if request("id")<>""then cgid=request("id") spname=request("spname") cs=request("cs") gg=request("gg") bz=request("bz") dw=request("dw") dj=request("dj") sl=request("sl") je=request("je") cgdate=request("cgdate") memo=request("memo") dj=cstr(dj)&"元" sl=cstr(sl)&dw je=cstr(je)&"元" if spname="" or cs="" or gg="" or bz="" or dw="" or dj="0" or sl="0" or je="0" then '判断表单元素是否为空 %> <%response.end end if set conn=server.createobject("adodb.connection") set rs=server.createobject("adodb.recordset") conn.open application("dsn") sql="insert into tab_cgdan(id,spname,cs,gg,bz,dw, dj,sl,je,cgdate,memo) values('"&cgid&"','"&spname&"',' "&cs&"','"&gg&"','"&bz&"','"&dw&"','"&dj&"','"&sl&"','"&je&" ','"&cgdate&"','"&memo&"')" '插入新记录 rs.open sql,conn,1,3 end if %>
|
技术细节
Chart对象用于在报表中插入图表,特别适用于销售图表的打印,在Web编程中经常需要做的一件事就是把从数据库中查出的数据使用图表(Chart)的形式在页面中表现出来。
ASP Chart是一个在服务器端生成图表的组件,可以保存到服务器端硬盘,也可以直接输出到浏览器端。Chart对象的应用范围如下。
建立JPG(Read/Write)、PNG(Write-only)和BMP(Read/Write)格式的图片。
支持3D效果。
支持饼图、条形图和面积图等多种格式。
自动建立图例。
支持多列数据。
</script> <% rs.movenext '移到下一条记录 next %> … '“柱状图分析”按钮和“线性图分析”按钮的设计代码略 <% end if %>
|
A注意
要使“Active X”控件的MSChart对象在页面中显示图片,需要在用户的计算机上安装Visual Basic 6.0或更高版本。
年销售额分析页面的运行结果如图2.30、图2.31所示。
|
| 图2.30 年销售额分析柱状图页面的运行结果 |
|
| 图2.31 年销售额分析线性图页面的运行结果 |
【责任编辑:
夏书 TEL:(010)68476606】